Jump to content
Geplaatst:
comment_788535

Mocht je (kleine) problemen hebben met een SA:MP pawnscript, stel je vraag dan hier. Het is hier dus niet de bedoeling dat je om een script gaat vragen. Het gaat alleen om jouw eigen code.

Maar houdt met het volgende wel even rekening zodat het topic overzichtelijk blijft:

  • Toon altijd de volledige code van de functie waarin het probleem zich bevindt.
  • Gebruik om je pawnscript te tonen de BB-tags "code" of zet het even op Pastebin als het script te groot is.
  • Ga niet dubbelposten als er nog niemand op je vraag heeft gereageerd. Heb geduld.
  • En het belangrijkste gebruik eerst altijd de zoekfunctie, wellicht is jouw vraag al gesteld.

  • Reacties 838
  • Bezichtigingen 204.8k
  • Created
  • Laatste reactie

Top Posters In This Topic

Posted Images

Featured Replies

Geplaatst:
comment_1500346
En wat moet het ongeveer voor gaan stellen? Tevens zie ik niet echt het nut in van 30 maal een ~n~ te zetten als je ook gewoon de positie kan aanpassen. Je mag ook geen spaties gebruiken in TextDraws, elke spatie moet worden voorgesteld met een _ .

is dat nieuw?

want ik heb altijd gewoon de spatie balk ingedrukt.

  • 2 weken later...
Geplaatst:
comment_1506765

Mijn vraag:

is nog steeds niet opgelost....

waarom werkt dit niet ?:

include <a_samp>
include <WX_Phone>

new rand[MAX_PLAYERS];
new OnlinePlayers;
forward MaakTelefoonNummer(playerid);

public OnPlayerDisconnect(playerid)
{
OnlinePlayers--;
return 1;
}

public OnPlayerConnect(playerid)
{
OnlinePlayers++;
MaakTelefoonNummer(playerid);
return 1;
}

public OnPlayerSpawn(playerid)
{
new p = playerid;
if (rand[p] != WX_GetPlayerPhoneNumber(p);
{
rand[p] = 0;
MaakTelefoonNummer(playerid);
}
return 1;
}

public MaakTelefoonNummer(playerid)
{
new p = playerid;
new name[24],string[128];
GetPlayerName(p,name,24);
rand[p] = random(OnlinePlayers);
rand[p] += random(555);
rand[p] += 11111;
// als je nouw nog geen goeie mix hebt xD
printf("[%d] %s's telefoon nummer is: %d",name,p,rand[p]);
WX_SetPlayerPhoneNumber(p,rand[p]);
format(string,128,"Your Phone Number is: %d",rand[p]);
SendClientMessage(p,YLLW,string);
return 1;
}

Edit: Als jullie de commands moeten hebben zeg dat ff ;)

Bewerkt: door Crusher!!

Geplaatst:
comment_1506777

rand[p] = random(sizeof(OnlinePlayers);

Dat had ik ook al veel eerder moeten zien, je kan namelijk sizeof enkel gebruiken om de lengte of grootte van strings arrays te weten te komen.

rand[p] = random(OnlinePlayers);

Bewerkt: door Big Boss

Geplaatst:
comment_1507667

Ik probeer de /pm uit de base.pwn in mijn eigen script te krijgen maar ik krijg 2 errors...

error 017: undefined symbol "strrest"

error 033: array must be indexed (variable "gMessage")

public OnPlayerCommandText(playerid, cmdtext[])
{

new cmd[256], tmp[256], tmp2[256];
new idx;
new string[256];
cmd = strtok(cmdtext, idx);
GetPlayerName(playerid, playername, sizeof(playername));
new Message[256];
new gMessage[256];
new pName[MAX_PLAYER_NAME+1];
new iName[MAX_PLAYER_NAME+1];

//----------[PM]----------------------------------------------------------------
if (strcmp("/pm", cmd, true) == 0)
{
tmp = strtok(cmdtext,idx);
if (!strlen(tmp) || strlen(tmp) > 5) {
SendClientMessage(playerid,COLOR_RED,"Usage: /pm (id) (message)");
return 1;
}
new id = strval(tmp);
gMessage = strrest(cmdtext,idx);
if (!strlen(gMessage)) {
SendClientMessage(playerid,COLOR_RED,"Usage: /pm (id) (message)");
return 1;
}
if (!IsPlayerConnected(id)) {
SendClientMessage(playerid,COLOR_RED,"/pm : Bad player ID");
return 1;
}
if (playerid != id) {
GetPlayerName(id,iName,sizeof(iName));
GetPlayerName(playerid,pName,sizeof(pName));
format(Message,sizeof(Message),">> %s(%d): %s",iName,id,gMessage);
SendClientMessage(playerid,COLOR_RED,Message);
format(Message,sizeof(Message),"** %s(%d): %s",pName,playerid,gMessage);
SendClientMessage(id,COLOR_RED,Message);
PlayerPlaySound(id,1085,0.0,0.0,0.0);
printf("PM: %s",Message);
}
else {
SendClientMessage(playerid,COLOR_RED,"You cannot PM yourself");
}
return 1;
}

Bewerkt: door Scofield6

Geplaatst:
comment_1513033

Even een vraagje tussendoor, kan iemand me het verschil uitleggen (het liefst aan de hand van voorbeelden ^_^) tussen deze 4 soorten variabelen en waarvoor en wanneer ze gebruikt worden:

new variabele;
new variabele[5];
new variabele[MAX_PLAYERS];
new variabele[MAX_PLAYER_NAME];

Thnx! ;)

Bewerkt: door JayKay

Geplaatst:
comment_1513222

new variabele;
new variabele[5];
new variabele[MAX_PLAYERS];
new variabele[MAX_PLAYER_NAME];

Maak integer aan

Maak array aan met grootte 5

Maak array aan met grootte 500

Maak array aan met grootte 20

MAX_PLAYERS = 500

MAX_PLAYER_NAME = 20

In een array worden veelal strings (tekst) opgeslagen, maar je kan ook individuele integers op slaan in elke 'cel' van de array. Even een voorbeeldje van Wikipedia geript:

Voorbeeld van een array van integers in de programmeertaal C:

int array[2]; // Een array met 2 integers (geen van de elementen hebben (nog) een waarde)

array[0] = 1; // Geeft het allereerste element in de array waarde 1

array[1] = 3; // Geeft het tweede element in de array waarde 3

Hierbij is de naam van de array "array" en de opgeslagen waarden in de array zijn 1 en 3. Deze waarden zijn nu te gebruiken met behulp van array[0] en array[1]. In sommige programmeertalen (bijvoorbeeld C of PHP) is 0 de index van de eerste waarde in de array, in andere programmeertalen is dit 1. Er zijn ook talen waar men zelf de ondergrens kan bepalen (bijvoorbeeld Perl).

Geplaatst:
comment_1515515

new variabele;
new variabele[5];
new variabele[MAX_PLAYERS];
new variabele[MAX_PLAYER_NAME];

Maak integer aan

Maak array aan met grootte 5

Maak array aan met grootte 500

Maak array aan met grootte 20

MAX_PLAYERS = 500

MAX_PLAYER_NAME = 20

In een array worden veelal strings (tekst) opgeslagen, maar je kan ook individuele integers op slaan in elke 'cel' van de array. Even een voorbeeldje van Wikipedia geript:

Voorbeeld van een array van integers in de programmeertaal C:

int array[2]; // Een array met 2 integers (geen van de elementen hebben (nog) een waarde)

array[0] = 1; // Geeft het allereerste element in de array waarde 1

array[1] = 3; // Geeft het tweede element in de array waarde 3

Hierbij is de naam van de array "array" en de opgeslagen waarden in de array zijn 1 en 3. Deze waarden zijn nu te gebruiken met behulp van array[0] en array[1]. In sommige programmeertalen (bijvoorbeeld C of PHP) is 0 de index van de eerste waarde in de array, in andere programmeertalen is dit 1. Er zijn ook talen waar men zelf de ondergrens kan bepalen (bijvoorbeeld Perl).

Ah ok, dat verklaart al een hoop maar waarom zet je bij MAX_PLAYERS niet gewoon 500 neer dan, is toch een stuk korter? :puh:

En hoe zit het met array's met 2 argumenten (new variabele[4] [16] zie ik bijv. staan)?

Kan je tot slot misschien nog even uitleggen hoe je array's moet gebruiken, dat is namelijk 1 van de onderdelen uit pawno wat ik nog niet snap :)

Geplaatst:
comment_1515534

Ah ok, dat verklaart al een hoop maar waarom zet je bij MAX_PLAYERS niet gewoon 500 neer dan, is toch een stuk korter? :puh:

Ga je gang. Maar weet wel dat als de MAX_PLAYERS verandert, je alles handmatig zal moeten veranderen.

En hoe zit het met array's met 2 argumenten (new variabele[4] [16] zie ik bijv. staan)?

Dit zijn multi-dimensional arrays en worden vaak gebruikt voor enums (enumeration)

bv.

#define MAX_PROPERTY 10

enum PROPERTY_INFO {
   Float:x,
   Float:y,
   Float:z
};

new PropInfo[MAX_PROPERTY][PROPERTY_INFO];

PropInfo[0][x] = 1852.5156;
PropInfo[0][y] = 2597.1525;
PropInfo[0][z] = 25.1684;

Kan je tot slot misschien nog even uitleggen hoe je array's moet gebruiken, dat is namelijk 1 van de onderdelen uit pawno wat ik nog niet snap :)

// Als string
new string[128];

string = "Hello World";
print(string);
// of
format(string, sizeof(string), "This %s has %d characters", "string", 29);
print(string);

// Als opslag voor meerdere integers
new array[5];
array[0] = CreateObject(...); // voeg object id 0 toe aan de array
array[1] = CreateObject(...);
array[2] = CreateObject(...);
array[3] = CreateObject(...); 
array[4] = CreateObject(...);

  • 3 weken later...
Geplaatst:
comment_1528634

new spawnlist[] = "1\tBanshee\n2\tBMX\n3\tBloodring\n4\tBullet\n5\tCheetah\n6\tComet\n7\tDinghy\n8\tElegy\n9\tFCR-900\n10\tFreeway\n11\tHotring 1\n12\tHotring 2\n13\tHotring 3\n14\tInfernus\n15\tJester\n16\tMonster\n17\tNRG\n18\tPacker\n19\tPhoenix\n20\tQuad\n21\tSanchez\n22\tSquallo\n23\tStallion\n24\t\Sultan\n25\tTurismo\n26\tVortex\n27\tWindsor\n28\tZR-350";

Geeft error:

C:\Documents and Settings\Hidde\Bureaublad\scripting new\gamemodes\martinsnew.pwn(687) : error 027: invalid character constant
C:\Documents and Settings\Hidde\Bureaublad\scripting new\gamemodes\martinsnew.pwn(687) : error 027: invalid character constant
Pawn compiler 3.2.3664	 	 	Copyright (c) 1997-2006, ITB CompuPhase


2 Errors.

Geplaatst:
comment_1528795

Ergens heb je dan een backslash zonder onderdeel staan. Gewoonlijk heb je \n en \t, maar ergens in jouw stukje moet enkel een \ staan. Dat is wat je moet verbeteren.

  • 2 weken later...
Geplaatst:
comment_1536994

Hallo,

Ik heb een nare gewoonte gevonden in mijn Pawno.

Zodra ik deze regel gebruik:

		
new Float:cX,FLoat:cY,Float:cZ;
GetVehiclePos(OldCar[playerid],cX,cY,cZ);

geeft Pawno het volgende commentaar:

warning 213: tag mismatch

en het rare is nog wel dat het wel gewoon werkt als ik het ondanks de warning toch gebruik

weet iemand hier een oplossing op??

Alvast bedankt!!

Gast
Dit onderwerp is gesloten.

Recent actief 0

  • Er zijn hier geen geregistreerde gebruikers aanwezig.