SetTimerEx("UBSicht", 1, true, "i", playerid);
Ein Timer der 1 Millisekunde hat?
Ändere das mal zu 100, dann solltest du etwas sehen.
SetTimerEx("UBSicht", 1, true, "i", playerid);
Ein Timer der 1 Millisekunde hat?
Ändere das mal zu 100, dann solltest du etwas sehen.
Das wurde dir doch schon erklärt.
Hier:
ocmd:getpass(playerid,params[])
{
new pass;
if(sscanf(params,"d",pass)) return SendClientMessage(playerid,COLOR_GREY,"Benutze: /getpass [1: SF // 2: LV]");
if(!IsPlayerInRangeOfPoint(playerid,5.0,359.2639,182.6619,1008.3828)) return SendClientMessage(playerid,COLOR_RED,"Du bist nicht an der Passausgabe in der Stadthalle.");
if(GetPlayerMoney(playerid) < 100000) return SendClientMessage(playerid,COLOR_RED,"Du besitzt nicht die notwendige Summe an Bargeld (100.000$)!");
if(pass == 1)
{
if(PlayerInfo[playerid][pSFPASS] == 1) return SendClientMessage(playerid,COLOR_RED,"Du hast diesen Pass schon!");
SendClientMessage(playerid, COLOR_LIGHTBLUE, "* Dir wurde soeben der Zollpass für San Fierro ausgehändigt.");
GivePlayerMoney(playerid, -100000);
PlayerInfo[playerid][pSFPASS] = 1;
}
else if(pass == 2)
{
if(PlayerInfo[playerid][pLVPASS] == 1) return SendClientMessage(playerid,COLOR_RED,"Du hast diesen Pass schon!");
SendClientMessage(playerid, COLOR_LIGHTBLUE, "* Dir wurde soeben der Zollpass für Las Venturas ausgehändigt.");
GivePlayerMoney(playerid, -100000);
PlayerInfo[playerid][pLVPASS] = 1;
}
else return SendClientMessage(playerid,COLOR_RED,"Du hast eine ungültige Eingabe getätigt.");
return 1;
}
Jeffry: Kannste mir noch ihr geht welche sachen paar PN schicken.?
Was genau willst du denn wissen? Ich habe dir einige Beispiele in meinem ersten Post genannt.
Des weiteren kannst du dich auch mal hier durcharbeiten, das bietet sich für den Anfang auch gut an.
http://wiki.sa-mp.com/wiki/Creating_Commands#Basic_Commands
Ansonsten, nimm dir ein kleines System und baue es nach, wie ich es beschrieben habe. So lernt man ziemlich gut.
Eine frage welche Funktionen definieren? diese Fehler?
Ja, diese zwei Funktionen.
Das hatte ich bereits hier geschrieben: Den Pass nur einmal aushändigen.
Natürlich solltest du selbst wissen, was du mit diesen Funktionen bezwecken willst, das können wir dir nicht sagen, Gedanken lesen können wir nicht.
mysql_query("SELECT gebuehr, zins FROM banken'");
mysql_store_result();
new resultline[200], i=0;
while(mysql_fetch_row_format(resultline))
{
sscanf(resultline,"p<|>dd",BankGebuehr[i], BankZins[i]);
i++;
}
mysql_free_result();
Mit:
new BankGebuehr[3];
new BankZins[3];
EDIT: Auf Grund deines Edits: Den Rest kannst du ja entsprechend dazumachen.
Das sind die Koordinaten die du zurück bekommst. Also die Koordinaten am Ende der Hydra. Wie bei GetPlayerPos.
Aber wenn ich dies mache kommen mehr Fehler aber wenn ich die Zwei if Abfragen rausnehme ist alles okey? [/align]
Hast du eventuell eine andere Lösung?
Ja, weil du die beiden Funktionen nicht definiert hast.
Was willst du denn überhaupt machen? Ist das überhaupt dein Code?
http://forum.sa-mp.de/gta-mult…eschnipsel-56#post1890617
Mit dem negativen Wert als Abstand, da es ja nach hinten geht. Musst halt mal messen, wie lang die Hydra ist. Sagen wir 3 Meter, dann GetPosVorSpieler(playerid, -3, x,y,z);.
Sonst nimmt er sich das Beispiel her und denkt es gibt nur diese tolle "Funktionsdokumentation" und interpretiert das so, dass Du ihm abrätst diese zu lesen bzw. erst später zu lesen, weil er dies am Anfang noch nicht verstehen würde.
Alle Einzelheiten bezieht sich, logischerweise, vom Startpunkt aus, über alle Verlinkungen und Unterverlinkungen: http://wiki.sa-mp.com/wiki/Main_Page
Wenn er sich das erst alles im Detail durchliest wird er nie anfangen zu Programmieren.
Das Wiki sollte man nutzen wenn man es braucht, und nicht zuvor komplett durchlesen.
Ebenfalls hast Du erst von der PawnDoc gesprochen, danach von der Wiki und dann wieder von der PawnDoc, während ich Deinen letzten Satz auf die Wiki & auf die PawnDoc bezogen hatte.
Stimmt doch auch. Die Pawn Doc und die Einzelheiten des Wikis kann er sich zu Gemüte führen, wenn er eine festes Fundament hat und mehr als die puren Grundlagen wissen will. Und im Bezug darauf, sage ich nur, dass er die Pawn Doc auch mit einem Fundament nicht auf Anhieb komplett versteht.
Du überliest einfach die Einschränkungen die ich mache. "Einzelheiten", "auf Anhieb", "im Detail", ... .
Beispiel:
Wenn du dir die Pawn Doc und das Wiki durchliest wirst du nichts verstehen.
Wenn du dir die Pawn Doc im Detail und das Wiki in allen Einzelheiten durchliest, wirst du nicht alles auf Anhieb verstehen.
Der Unterschied sollte zu erkennen sein.
Ein Bild vom Color Picker?
1.)
Die Funktion "AnSafe(playerid)" existiert nicht. Entweder du entfernst den Code, oder du erstellst diese Funktion mit dem was sie machen soll.
2.)
Die Funktion "CheckPass(...)" existiert nicht. Entweder du entfernst den Code, oder du erstellst diese Funktion mit dem was sie machen soll.
3.)
loose indentation => Code ist nicht richtig eingerückt. Entweder du rückst es richtig ein, oder du setzt
#pragma tabsize 0
unter die Includes.
4.)
Hast du die ocmd-Include überhaupt im Code?
Lade dir die aktuelle Include nochmal runter: [ INCLUDE ] ocmd 2.1.1 [ Update 3.11.2013 ]
Wie wäre es dann, wenn du die Fehler sowie die dazugehörigen Codes postest? Wenn du das nicht machst, können wir dir nicht helfen.
Das würde ich schon so stehen lassen aber das mit der Wiki nicht. Mit der Wiki lernt man auch einiges und ich finde es ist kein schlechter Ansatz. Wenn man neu anfängt, sollte man sich auch die Funktionen genau ansehen und da ist es nicht verkehrt mal jede Funktion, die man gerade verwendet vorher sich mal anzusehen
Stimmt, das habe ich auch nie gesagt. Ich habe gesagt, dass man es sich nicht in allen Einzelheiten durchlesen soll, von A bis Z.
Sowas ist damit gemeint: http://wiki.sa-mp.com/wiki/Keywords:Directives
Das hat nichts mit den Grundlagen mehr zu tun.
und kein Mensch braucht 3 Jahre um dann immernoch nicht in der Wiki durchzublicken.
Wer hat denn das gesagt? Ich habe geschrieben, dass er nach 3 Jahren die PAWN Doc studieren kann, und selbst dann muss er noch nicht alles auf Anhieb verstehen. Klar, es kann sein, dass er super damit klar kommt, aber wenn nicht ist das auch egal.
Du verdrehst meine Aussagen und bezeichnest es dann als Schwachsinn. Ok.
C:\Users\Sulo\Desktop\Script\gamemodes\.pwn(87575) : error 017: undefined symbol "ocmd_timebomb"
Das hat aber nichts mit dem Befehl zu tun, den du oben hast.
Poste doch bitte mal die dazugehörigen Codes, zu den Fehlern und markiere die Zeilen mit der richtigen Nummer:
Ich gebe dir ein paar gute Tipps wie du dir es selbst sehr gut beibringen kannst, so habe ich es zumindest vor über 5 Jahren gelernt.
Ich selbst 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, nimm nicht gleich einen Gamemode und verunstalte den, du wirst nichts kapieren. Ich arbeite nun über 4 1/2 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 geht's 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;
}
Probiere aus, mit diesem Code klar zu kommen.
Das fügst du im callback OnPlayerCommandText ein. Dann auf den Compiler drücken, und Server neu starten.
Wenn du damit klar kommst, gehe weiter und versuche Dinge selbst zu erstellen.
Und am wichtigsten: Immer dranbleiben!
Viel Erfolg!
Klappt das mit der Distanz jetzt?
Der print muss aus der Schleife raus:
Nein, schau mal genau hin, die macht nicht 1:1 das gleiche. Die erste Schleife prüft erst, ob du den gesamten Namen eingegeben hast, die zweite überprüft, ob du einen Teil davon eingegeben hast.
Das ist wichtig, wenn du folgendes Szenario hast:
ID1: TestUser
ID2: Test
Jetzt gibst du /befehl Test ein. Das heißt, da du den ganzen Namen eingegeben hast, willst du ID 2 ansprechen. Ohne die Aufteilung, würde er dir (bei nur strfind) ID 1 ausgeben.
Nimmst du nur strcmp, kannst du nicht "/befehl TestU" eingeben.
EDIT:
TomatenvondenAugennehm:
{"Burger Shot South", 810.4859,-1616.0,13.5469,270.6664, 362.7664,-75.0560,1001.5078,314.9813, 1, 10},
Nach "-1616.0" war eine 509 zu viel.
Der "u" Parameter von sscanf2 (Pluginversion) funktioniert bei mir nicht.
Wie viel langsamer / resourcenfressender würde der Server werden, wenn ich den stock mitnutze?
Gut, das ist sscanf, meine Meinung darüber ist ja bekannt.
Das ist so wenig, das kannst du vernachlässigen.
Ich würde dir aber raten, anstatt den sscanf stock zu verwenden, und darauf verzichten zu müssen, den Spieler-Namen eingeben zu können, lieber strtok zu nutzen.
dcmd_befehl(playerid,params[])
{
new pID, tmp[20], idx;
tmp = strtok(params, idx);
if(!strlen(tmp)) return SendClientMessage(playerid,0xFF0000FF,"Fehler: /befehl [playerid/SpielerName]");
if(IsNumeric(tmp)) pID = strval(tmp);
else pID = ReturnPlayerID(tmp);
if(!IsPlayerConnected(pID)) return SendClientMessage(playerid,0xFF0000FF,"Der Spieler ist nicht online");
//Code hier.
return 1;
}
Nein, OnGameModeExit kannst du da nicht verwenden.
Der Fehler ist aber bei dir in der .pwn Datei. Such da mal nach "hooked", findest du eine Zeile die das beinhaltet?
Wenn nicht, such danach mal in der streamer.inc, das würde mich aber wundern.