Und jetzt noch den Code von OnPlayerText (wo er "T" drückt). Sonst können wir es ja nicht vergleichen.
Macht Sinn oder?
Beiträge von Jeffry
-
-
Dadurch dass du Pickup Type 3 verwendest (Pickupable, respawns after death), bekommst du 7 Granaten vom Server standardmäßig (pickupable).
Was du machen kannst:
Pickup Tye zu 1 ändern (kann nicht aufgenommen werden, wird immer angezeigt).
Und dann per Spieler Array abfragen, ob er es bereits aufgenommen hat:Oben im GM:
new PickedUp[MAX_PLAYERS];public OnPlayerPickUpDynamicPickup(playerid, pickupid)
{
if(pickupid == BF_Weapon[0] && PickedUp[playerid] == 0)
{
PickedUp[playerid] = 1;
return GivePlayerWeapon(playerid, Weapons[16][0], 5); //Grenade
}
}OnPlayerSpawn:
PickedUp[playerid] = 0; -
[ SCRIPTING ] MySQL (Installation, Zugriff, Einstellungen, Login & Register Beispiel)
Dort steht alles was du über MySQL für SA-MP wissen musst.
-
Kurz und knapp: NeinHast du es allerdings deaktiviert (0) so musst du diese Deaktivierung entfernen. Standardmäßig sind die Marker aber an, deshalb musst du sie nicht mit diese Funktion aktivieren.@Post Unten:
Dann habe ich deinen Post falsch verstanden. Sehr gut, dass du es hinbekommen hast, danke für die Info!! -
[ FILTERSCRIPT ] DrEdit - Ingame Object Editor | 0.3e+ | Speichere, lade und exportiere Objekt Dateien | dini, zcmd & sscanf
Damit sollte es kein Problem sein. -
stock fremoveline(filename[], line[]) //© Original von Jefff, von Jeffry verbessert.
{
new string[256], str[256], File:handle, File:ftmp;
handle = fopen(filename,io_read);
format(str,sizeof(str),"%s.part",filename);
ftmp = fopen(str,io_write);
while(fread(handle,string))
{
new txt[256]; txt = string;
for(new i = 0, j = strlen(txt); i < j; i++) if(txt[i] == '\n' || txt[i] == '\r') txt[i] = '\0';
if(strcmp(line, txt))
{
fwrite(ftmp,string);
}
}
fclose(handle);
fclose(ftmp);
handle = fopen(filename,io_write);
ftmp = fopen(str,io_read);
while(fread(ftmp,string))
fwrite(handle,string);
fclose(handle);
fclose(ftmp);
return fremove(str);
}Benutzung:
fremoveline("filename.txt", "TE"); -
SendClientMessageToAll(-1," ");
mit
SendClientMessage(playerid,-1," ");
ersetzen.War aus deiner Frage aber nicht ersichtlich.
-
for(new i=0; i<100;i++) SendClientMessageToAll(-1," ");
An alle Spieler 100 mal eine leere Zeile. -
Also ich habe PAWN gelernt, indem ich mir den LAdmin4v2 (damals sehr neu) genommen habe, und versucht habe, die einzelnen Teile zu verstehen. Dann habe ich einfach losgelegt, und überlegt, welcher Teil das tut, was ich will. Den Code hab ich mir dann angeschaut, und so für den neuen Code verändert, dass er seinen Zweck erfüllt hat.
Wichtig: Fang klein an, jeder tut das. Ich arbeite nun über 4 Jahre mit PAWN und mein Wissen ist noch lange nicht komplett, im Gegenteil.
Falls dir jemand sagt, du sollst dir die PAWN Doc durchlesen, lass es, genauso rate ich dir davon ab das wiki in allen Einzelteilen durchzulesen. Du wirst es nicht verstehen. Das kannst du in 3 Jahren machen, wenn du es verstehst, und selbst dann wirst du den Großteil in der Pawn Doc nicht auf Anhieb verstehen.Noch was: Ausprobieren. Du kannst nichts kaputt machen. Das einzige was passieren kann, ist dass du Errors bekommst. Na und? Für was gibt es STRG+Z. Einfach probieren, wenn du nicht weiter kommst, lass es, oder frag nach Hilfe, sofern es im kleinen Bereich ist.
Learning By Doing nennt sich das. Nicht aufgeben, einfach machen machen machen. Das muss nicht immer perfekt sein, und muss auch nicht immer Sinn ergeben, hauptsache du machst was. Zum Anfang kannst du dir z.B. vornehmen, einen FilterScript der hier im Forum veröffentlicht wurde (einen einfachen) nachzumachen. Musst ihn ja nicht auch veröffentlichen, aber nur zur Übung einfach nachmachen. Wenn du hängst, kannst du ja nachsehen, was falsch ist.
Meiner Meinung nach besser als alles andere.
Wie machst du das?
Du suchst dir einen Filterscript der irgendwas macht, sei es ein Auto Spawn Menu.
Schau dir zuerst mal an, was der FilterScript denn machst (z.B. ein Auto-Menu, um Auto's zu spawnen). Dann überlegst du, was du denn alles dafür brauchst, suchst dir die Funktionen zusammen (Google, SAMP Wiki) und legst los so ein Menu zu erstellen. Wenn du irgendwo hängst, kannst du einen Blick in den Code werfen, und ein paar Zeilen, die du denkst zu verstehen abschreiben, dann siehst du ja was passiert.
Am Besten ist es aber, wenn du es ganz ohne in den Code zu schauen hin bekommst, deshalb fang mit leichten Dingen an.
Bis du erst mal richtig rein findest vergehen mit Sicherheit 1-3 Monate! Also nicht verzagen, du wirst am Anfang ziemlich oft stecken bleiben und auf die Nase fallen (ist wie laufen lernen). Ich weiß das von mir. Wenn du einmal drinne bist, dann gehts jeden Tag besser.PS: Ich hab es ganz alleine gelernt. Die einzige Hilfestellung die ich damals hatte war ein /kill Command aus 6 Zeilen code, den mir jemand gemacht hat. Den gebe ich dir auch:
if(strcmp(cmdtext, "/kill", true) == 0)
{
SetPlayerHealth(playerid, 0.0);
SendClientMessage(playerid, 0xFF0000FF, "Du hast dich selbst getötet.");
return 1;
}Das fügst du im callback OnPlayerCommandText ein. Dann auf den Compiler drücken, und Server neu starten.
Und am wichtigsten: Immer dranbleiben!
Viel Erfolg! -
Berechnet die distanz zwischen 2 Points.
Also erstens ist es nicht die Distanz zwischen zwei beliebigen punkten, sondern die Distanz zwischen dem Spieler und einem Punkt.
Zweitens, die Funktion gibt es schon in PAWN:
http://wiki.sa-mp.com/wiki/GetPlayerDistanceFromPoint -
Um die ursprüngliche Frage zu beantworten: Ja
dcmd_kicken(playerid,params[]) return dcmd_kick(playerid,params);
Den kicken Befehl natürlich ganz normal wie immer bei OnPlayerCommandText definieren.
-
Hab das per Teamspeak schon mit ihm geklärt
Lag auch daran
Na dann umso besser. Nächstes mal bitte als erledigt markieren. Thx -
@[IRP]K3VIN: Variablen können keine array Fehler am Compiler auslösen. Auch wenn sie ersichtlich extrem falsch sind, der Compiler ignoriert das. Anders sieht es bei konstanten oder Definitionen aus.
Das Problem liegt daran, dass ttext nicht dir array Größe 22 hat. Also:
new ttext[22]; -
Das einzige was mir dazu einfällt ist http://wiki.sa-mp.com/wiki/OnUnoccupiedVehicleUpdate
Du könntest, sobald das callback aufgerufen wird das Vehikel an seinen Spawn zurücksetzen (SetVehicleToRespawn).Anders ist es soweit ich weiß nicht möglich, es gibt keine Möglichkeit Autos zu freezen.
-
Das gehört so:
new robstring[128];
new TresorGeld = random(80000)+20000;
SendClientMessage(playerid, grün, "Du hast den Tresor geknackt!");
format(robstring, sizeof(robstring),"In dem Tresor lagen %d$! Verschwinde schnell mit dem Geld!", TresorGeld);
SendClientMessage(playerid, grün, robstring);
GivePlayerCash(playerid, TresorGeld); -
Wenn du das so verwendest, dann musst du, wie Piet schon sagte ein Array deklarieren. Ich hab das vorhin nicht gemacht, weil ich ja nicht wusste wie du damit arbeitest.
Also
new aInfo[autohaus]={
zu
new aInfo[][autohaus]={ -
new aInfo[{autohaus]={
zu
new aInfo[autohaus]={Die { gehört da nicht rein.
-
Ich hab's dir doch oben schon hingeschrieben:
#define strlost(%0) (param>%0)
So. -
#define strlost(%0) (param>%0)
Sonst heißt es ja:
if(!param>%0)...
und das gibt dir den Fehler. Es wird praktisch 1:1 ersetzt, wenn man sich es so vorstellt.Nächstes mal bitte den Fehler mit angeben.
-
stock countWords(string[]) //©Jeffry
{
new count = 0, tmp = 0;
for(new i = 0; i < strlen(string); i++)
{
if(string[i] != ' ' && tmp == 0)
{
count++;
tmp = 1;
}
else if(string[i] == ' ' && tmp == 1) tmp = 0;
}
return count;
}Zu benutzen:
new string[100];
string="Das ist ein Beispieltext."; //4 Wörter
printf("%d Wörter", countWords(string));
string="Das ist ein weiterer Text ."; //6 Wörter
printf("%d Wörter", countWords(string));
string=" letzter Beispiel text"; //3 Wörter
printf("%d Wörter", countWords(string));