was für einen fehler
Beiträge von Tround
-
-
klar
solange die include im script eingebunden ist -
ich würds dir empfehlen^^
-
was der spieler in den input dialog eingegeben hat wird im response public mit inputtext[] ausgelesen.
erstmal schaun ob eine zahl eingegeben wurde mit
if(!IsNumeric(inputtext))return ShowPlayerDialog...
(is numeric überprüft ob überhaupt eine zahl eingegeben wurde .. http://pastebin.com/3G94dnAw)die auswahl begrenzen auf skins 0-299
if(strval(inputtext)<0||strval(inputtext)>299)return ShowPlayerDialog...
(mit strval wird der string inputtext[] in einen integer umgewandelt)und natürlich
SetPlayerSkin(playerid,strval(inputtext)); -
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
mit inputtext wird ausgelesen was der spieler in den input dialog eingegen hat
if(dialogid==dialog_buydrugs)
{
if(response==1)
{
if(listitem==0)return ShowPlayerDialog(playerid,dialog_buyweed,DIALOG_STYLE_INPUT,"Weed","Ray: Wieviel Gramm darf's denn sein, mein Lieber?","Kaufen","Abbrechen");
}
}
if(dialogid==dialog_buyweed)
{
if(response==1)
{
GivePlayerMoney(playerid,-strval(inputtext)*15);//mit strval den inputtext string in ein integer umwandeln und mit dem weed preis multiplizieren
return 1;
}
}man sollte dann natürlich auch noch so abfragen machen wie:
hat der spieler genug geld
if(GetPlayerMoney(playerid)<strval(inputtext))return blais das eingegebene eine zahl (den stock gibts überall im inet)
if(!IsNumeric(inputtext))return bladie eingabe begrenzen damit man nicht ins minus kann
if(strval(inputtext)<1||strval(inputtext)>100)return bla -
das menü nicht über den pickup öffnen sondern per befehl oder per tastendruck.
oder vlcht ne variable setzten wie z.b.new waffenmenuoffen[MAX_PLAYERS];
if(pickupid == waffen)
{
if(waffenmenuoffen[playerid]==1)return 0;
ShowPlayerDialog(playerid, 1,DIALOG_STYLE_LIST, "Laden", "Deagle 2500$\nM4 4000$\nSniper 4000$\nmp5 3000$\nShotgun 3000$\nRüstung 2000$\nLeben 200$" , "ok", "abbrechen");
waffenmenuoffen[playerid]=1;
}und beim dialog response
if(response==0)return waffenmenuoffen[playerid]=0;
oder wenn eine waffe gekauft wird bei response 1 -
ich vermute mal das liegt an dem pickup.
wenn du in dem pickup stehen bleibst öffnet sich das menü die ganze zeit neu..
denk ich mal -
warum "uI" obwohl beides integer sind ?
if(sscanf(params,"ui",Farbe1,Farbe2)) -
tut mir leid das ich einen kleine fehler übersehen habe aber dennoch ist euer code falsch..
das hat mit dem beschriebenen fehler absolut nichts zutun .. -
benutzt du die mysql stocks von maddin?
-
kann man ein system auch einfach auf einem testserver vorstellen ohne den code zu zeigen?
-
bei if abfragen geht er für jede abfrage einzeln durch aber bei switch case kann er direk dort hinspringen wos nötig ist.. von daher bei vielen if abragen durchaus schneller..
würrd ich mal so behaupten -
@ Crocky
hast du 0.3x ? wenn ja kann das gar nicht klappen -
hier die antwort auf deine pn damit es auch andere nachlesen können wenn sie danach suchen.. habe es bei mir so gelöst:
ocmd:kick(playerid,params[])
{
new pID, reason[128],string[128];
if(sscanf(params,"us",pID,reason))return SendClientMessage(playerid,0xFFFA00FF,"/kick [id] [grund]");
format(string,sizeof(string),"AdmCmd: %s wurde von %s gekickt. Grund: %s",Spielername(pID),Spielername(playerid),reason);
SendClientMessageToAll(0xFFFA00FF,string);
SetTimerEx("kickban",100,0,"ii",pID,1);
return 1;
}
forward kickban(playerid,bankick);
public kickban(playerid,bankick)
{
switch(bankick)
{
case 1:return Kick(playerid);
case 2:return Ban(playerid);
}
return 1;
}case 1 für kick
case 2 für ban -
das liegt an dem neuesten update von samp
Important Note: As of SA-MP 0.3x, any message sent to the player with SendClientMessage before Kick() will not be displayed for them.
bedeutet Kick() und Ban() werden zuerst aufgerufen egal in welcher reihenfolge gescriptet wurde..
einfach einen timer setzen und den spieler nach ein paar ms kicken um noch den namen auslesen zu können und den spieler abzuspeichern -
wieso KillTimer(500000); obwohl du gar keinen timer erstellt hast mit dem namen 500000 ????
if(strcmp(cmd, "/tor", true) == 0)
{
if(pInfo[playerid][fraktion] >= 1)
{
if(IsPlayerInRangeOfPoint(playerid, 5.0, 1547.27, -1627.73, 15.32))
{
MoveObject(LSPDTor, 1547.27, -1627.73, 15.12, 6.0);//aufmachen
SetTimer("torpublic",10000,0);//timer von 10 sek mit repeat 0
}
}
return 1;
}
forward torpublic();
public torpublic()
{
MoveObject(LSPDTor, 1547.27, -1627.73, 15.32, 6.0);//zumachen
return 1;
} -
nein
-
-
zu 1:
if(sscanf(params,"s",pID,str))return SendClientMessage(playerid,Farbe_Grau,"Benutze: /unban [Name]");
dort steht nur ein "s" für einen string aber du hast 2 params angegeben..zu 2:
seit dem neuesten samp update wird Kick oder Ban immer zuerst ausgeführt egal in welcher reihenfolge gescriptet wird..
daher mit einem kleinen timer den spieler später kicken damit man noch vorher den namen auslesen kann und eine nachricht schicken kann.. sowie den spieler gebannt abspeichern.. -
GetPVarInt ist für integer gedacht.. was du suchst ist vermutlich GetPVarString
http://wiki.sa-mp.com/wiki/GetPVarString