Erklär mir mal bitte welchen Vorteil ein Timer hat.
Es funktioniert genau so,ist sogar Resourcen schonender ...
Beiträge von Goldkiller
-
-
Würde hier für keinen Timer benutzen.
new tickLastUse[MAX_PLAYERS];public OnPlayerCommandText(playerid, cmdtext[])
{if(!strcmp(cmdtext,"/ad",false,3))
{
new
cTick = GetTickCount();
if(strlen(cmdtext) < 4) return SendClientMessage(playerid,0xFFFFFFFF,"Nutze : /ad [Text]");
if( (tickLastUse[playerid] + (10*1000)) > cTick) return SendClientMessage(playerid,0xFFFFFFFF,"Bitte warte noch etwas");
new adtext[128];
format(adtext,sizeof adtext,"Werbung : %s",cmdtext[4]);
SendClientMessageToAll(0xFFFFFFFF,adtext);
tickLastUse[playerid] = cTick;
return 1;
}
return 0;
}
(10*1000)) - Bedeutet 10Sekunden bzw 10000ms / ticks. -
YSI_Objects.
-
Spätestens wenn sich die Antworten rumgesprochen haben überflüssig :p.
-
Ich hab dir geantwort und die Antworten geben.Du solltest auch mal Eigeninziative zeigen und nicht einfach hoffen,dass dir jeder das Script fertig gibt.
So lernst du niemals was,aber wozu ist denn das Forum da ...Ich kann es nicht ändern,dass du zu Faul bist im SA:MP Wiki zu gucken,welche Parameter Delete3DTextLabel brauch.Da frag ich lieber im Forum und warte Stunden,anstatt mich selber 30Sekunden hinzusetzen und selber zu gucken.Super Einstellung
-
Muss man dir jeden Schritt vorkauen?
Wenn du schon die richtige Funktion gefunden hast,wieso schaust du dann nicht noch im Wiki nach,welche Parameter die Funktion brauch? -
Dir sollte etwas auffallen:
Label[playerid] = Create3DTextLabel(string,COLOR_BLUE,pPosX,pPosY,pPosZ,NAMETAG_SHOW_DISTANCE,-1,0);
Attach3DTextLabelToPlayer(Label[playerid],playerid,0.0,0.0,0.0);
Update3DTextLabelText(Label[playerid],COLOR_BLUE,string);DeletePlayer3DTextLabel(playerid,Deckname[playerid]);
Falls nicht,schau mal hier unter Related Functions ( unten ).
Du benutzt eine falsche Funktion,welche solltest du selber herraus finden. -
Du bist auch wirklich sparsam darin,Code zu zeigen.
Wie erstellst du das 3DTextLabel ?
Wie hast du Label (Variable) definiert? -
if(strcmp(cmd, "/deldeckname", true) == 0)
{
if(IsPlayerConnected(playerid))
{
if (!PlayerInfo[playerid][pAdmin] >= 1337)
{
SendClientMessage(playerid, COLOR_GRAD2," Du bist kein Admin!");
return 1;
}
if(Deckname[playerid] == 1)
{
DeletePlayer3DTextLabel(playerid,Deckname[playerid]);
SendClientMessage(playerid, COLOR_GRAD2," Deckname erfolgreich gelöscht!");
Deckname[playerid] = 0;
return 1;
}
else
{
SendClientMessage(playerid, COLOR_GRAD2,"Du hast keinen Decknamen erstellt!");
return 1;
}
}
return 1;
}
Woher willst du denn wissen,dass bei if(Deckname[playerid] == 1) es tatsächlich 1 ist?
Du solltest mit einer anderen Variable ( bool ) überprüfen ob der Spieler einen Decknamen erstellt hat,nicht mit dem direkten 3DText.Möglich,dass es auch geht mit if(Deckname[playerid]) ,dazu müsstest du aber mindestens beim Connecten des Spielers den Decknamen auf 0 setzen.
-
Du könntest aber auch die Suche benutzen und ein Tutorial suchen dass sowas behandelt.
[Scripting] Checkpoints abfahren -
Das kommt davon,wenn man Copy & Paste macht.
new cmd[256];if(strcmp(cmd, "/help", true) == 0)
Erstmal brauchst du cmd überhaupt nicht,schon gar nicht mit einer Größe von 256.
Die Abfrage wird immer false sein,da cmd ein bisher leerer String ist.Vergleichst du den mit irgendeinem anderem Text wird es immer false zurück geben.Von daher lass cmd gleich ganz weg und nimm cmdtextAchja,die Abfrage IsPlayerConnected() ist sowas von überflüssig ... Wie soll jemand einen Text schreiben,wenn er nicht auf dem Server ist?
public OnPlayerCommandText(playerid, cmdtext[])
{
if(strcmp(cmdtext, "/help", true) == 0)
{
if(IsPlayerConnected(playerid))
{
SendClientMessage(playerid, COLOR_BLAU,"==============[Commands]==============");
SendClientMessage(playerid, COLOR_GRUEN,"*** ACCOUNT *** | /info /help ");
SendClientMessage(playerid, COLOR_GRUEN,"*** CAR *** | /parken /carlock /carsell");
}
return 1;
}
if(strcmp(cmdtext, "/info", true) == 0)
{
if(IsPlayerConnected(playerid))
{
SendClientMessage(playerid, COLOR_BLAU,"==============[info]==============");
SendClientMessage(playerid, COLOR_GRUEN,"ComaCrew Rl script 0.01a");
SendClientMessage(playerid, COLOR_GRUEN,"Forum:");
SendClientMessage(playerid, COLOR_GRUEN,"Teamspeak:");
SendClientMessage(playerid, COLOR_GRUEN,"SuperAdmin: [CC]Saki");
}
return 1;
}
} -
GetPlayerNearestCarID(playerid,Float:radius)
{
new Float:vx,Float:vy,Float:vz,carid;
for(new v = 0; v <= MAX_VEHICLES; v++)
{
GetVehiclePos(v,vx,vy,vz);
if(IsPlayerInRangeOfPoint(playerid,radius,vx,vy,vz))
{
carid = v;
return carid;
}
}
return 1;
}
Die Funktion würde generell immer true zurück geben,weshalb sie relativ sinnlos ist.
GetPlayerNearestCarID(playerid,Float:radius)
{
new Float:vx,Float:vy,Float:vz,carid;
for(new v = 1; v <= MAX_VEHICLES; v++) // VehicleID's starten bei 1
{
GetVehiclePos(v,vx,vy,vz);
if(IsPlayerInRangeOfPoint(playerid,radius,vx,vy,vz))
{
carid = v;
return carid;
}
}
return 0; // Hier muss 0 - false hin
} -
Sehr ausführlich erklärt ... Welcher Moderator hat das Thema den freigeschaltet
-
Learning by Doing.
Fang nochmal ganz klein an mit relativ einfachen Sachen,wie einem zufälligem Wetter per Timer und steiger dich immer weiter.
Das funktioniert aber auch nur,wenn du genug Eigeniniziative zeigst und nicht nach 5Minuten aufgibst und hier um Hilfe bittest . -
Zeig mal die Zeile,wo du das handypickup erstellst.
-
Da fehlt "playerid" als zu übergebender Parameter,Spamfish.
SetTimerEx("HandyKlingel",1000,false,"i",playerid); -
Bis man die alten,unnötigen Beiträge gelöscht hat,sind wieder 1000 neue enstanden.
Dafür müsste man das Forum wohl oder übel offline nehmen,was den meisten hier sicherlich nicht gefällt da sie ständig Hilfe brauchen. -
Das geht natürlich auch.
ShowPlayerDialog(playerid, msg, DIALOG_STYLE_LIST, "Info", "400 - Landstalker\n \
401 - Bravura\n \
402 - Buffalo\n \
403 - Linerunner\n \
404 - Perenniel\n \
405 - Bullet", "Spawn Fahrzeug", "Beenden");
Um das richtig dargestellt zu sehen,kopier dir das mal in dein SourceCode. -
Versuch es doch erstmal alleine.
Mach einen Loop durch WaffenAuswahl und vergleiche mit strcmp den eingegebenen Waffenamen waffe mit Waffenname. -
Man brauch auch einen Loop der durch alle Waffennamen geht damit es funktioniert ...