Ich suche ein stock also Funktion die man das näherste Position (Point) findet.
Ich hab schon eine Script die es näherste Spieler aufruft. Jetzt brauche ich die näherste Point Funktion.
Bitte hilft mir.
Ich suche ein stock also Funktion die man das näherste Position (Point) findet.
Ich hab schon eine Script die es näherste Spieler aufruft. Jetzt brauche ich die näherste Point Funktion.
Bitte hilft mir.
Wie kann man ein String von einer Textdraw aufrufen ?
z.B GetString oder TextDrawGetString sowas meine ich
Als erstens musst du so machen wie der Cabo geschrieben hat.
und du hast ein Fehler bei if(weapon < 0 weapon > 54)
Da kommt kein sondern && weil dann wird immer das Fehler nachricht kommen.
Bei Skin hast du auch gleiche gemacht if(skin < 0 skin > 999)
alles ändern
IsPlayerInRangeOfPoint(playerid, Float:range, Float:x, Float:y, Float:z)
Kein Antwort -.- Bitte hilft mir doch
Wie kann man bei TextDraw die Box höhe und breite bearbeiten sowie hier:
http://img269.imageshack.us/img269/8592/speedopos.jpg
Also auch bei Textdraw Creatern geht das auch nicht. Brauche dringend hilfe für mein Server.
Sowas ?
new plname[MAX_PLAYER_NAME]; // Neue Variable wird erstellt.
GetPlayerName(playerid,plname,sizeof(plname)); // Die Variable holt die Name der Spieler raus.
new namestring = strfind(plname, "_", true); // Es wird ein Variable erstellt.
new namestring2 = strfind(plname, ".", true); // Es wird ein Variable erstellt.
if(namestring == -1 || namestring == -1) // Wenn der Spieler kein _ zeichen oder . zeichen hat...
{
// Hier Kommt was passieren soll ich hab Vorlage gemacht
// Es wird ClientMessage für Spieler gekommt und wird gekickt
SendClientMessage(playerid, 0xEB0000FF, "===================================================");
SendClientMessage(playerid, 0x37FF00FF, "Einwanderungsamt: Dieser Name ist hier leider nicht legal!");
SendClientMessage(playerid, 0x37FF00FF, "Einwanderungsamt: Benutze Vorname_Nachname!");
SendClientMessage(playerid, 0xEB0000FF, "===================================================");
Kick(playerid);
}
Ganz oben:
new saveallow[MAX_PLAYERS];
Unter OnPlayerCommandText
if(!strcmp(cmdtext,"/allowsavespawn",true,15))
{
if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid,0xFF0000FF,"Du bist kein Admin");
if(cmdtext[15] == 0) return SendClientMessage(playerid,0xFFFFFFFF,"NUTZUNG: /allowsavespawn [playerid]");
if(!IsPlayerConnected(strval(cmdtext[15]))) return SendClientMessage(playerid,0xFFFFFFFF,"Kein Spieler mit dieser ID gefunden");
saveallow[strval(cmdtext[15])] = 1;
SendClientMessage(playerid,0xFFFF00FF,"Du hast dem Spieler das Spawn-Speichern erlaubt");
SendClientMessage(strval(cmdtext[15]),0xFFFF00FF,"Dir wurde das Speichern deines Spawnpunkts erlaubt");
return 1;
}
if(!strcmp(cmdtext,"/savespawn",true))
{
if(saveallow[playerid] != 1) return SendClientMessage(playerid,0xFF0000FF,"Dir wurde das Speichern deines Spawnpunkts nicht erlaubt");
new Float:x,Float:y,Float:z;
GetPlayerPos(playerid,x,y,z);
new playername[MAX_PLAYER_NAME];
GetPlayerName(playerid,playername,MAX_PLAYER_NAME);
new spielerdatei[80];
format(spielerdatei,sizeof(spielerdatei),"Spawns/%s.ini",playername);
dini_FloatSet(spielerdatei,"SpawnX",x);
dini_FloatSet(spielerdatei,"SpawnY",y);
dini_FloatSet(spielerdatei,"SpawnZ",z);
SendClientMessage(playerid,0xFFFF00FF,"Spawnpunkt gespeichert");
return 1;
}
Bei deinem Server ? Oder bei allem Server
Egal, kann ~closed werden
Du musst die Variable
new Spieler[MAX_PLAYERS][spieler_daten];
unter
enum spieler_daten
{
wanted,
skin,
Float:lastx,Float:lasty,Float:lastz,
eingeloggt}
nehmen.
Also so:
enum spieler_daten
{
wanted,
skin,
Float:lastx,Float:lasty,Float:lastz,
eingeloggt
}
new Spieler[MAX_PLAYERS][spieler_daten];
Dann klappt es
Ja .Net Framework 4
Also, als erstens entschuldige ich für Doppelpost.
Hab Textdraw gelöscht funkt wieder. ich weiß nicht wo das fehler ist wenn ich mit pawno kombiliere kommt kein error/warning
Das ganz oben
new Text:Textdraw0;
new Text:Textdraw1;
new Text:Textdraw2;
new Text:Textdraw3;
Das ganz oben
new GroveKills;
new BallasKills;
new VagosKills;
new TraidsKills;
Ganz oben
new Groves[50], Ballas[50], Vagos[50], Traids[50];
Unter Gamemodeinit
format(Groves,sizeof(Groves),"~g~Groves: ~w~%d",GroveKills);
format(Groves,sizeof(Groves),"~p~Ballas: ~w~%d",BallasKills);
format(Groves,sizeof(Groves),"~y~Vagos: ~w~%d",VagosKills);
format(Groves,sizeof(Groves),"~r~Traids: ~w~%d",TraidsKills);
Textdraw0 = TextDrawCreate(11.000000,260.000000,Groves);
Textdraw1 = TextDrawCreate(12.000000,281.000000,Ballas);
Textdraw2 = TextDrawCreate(23.000000,301.000000,Vagos);
Textdraw3 = TextDrawCreate(18.000000,321.000000,Traids);
TextDrawAlignment(Textdraw0,0);
TextDrawAlignment(Textdraw1,0);
TextDrawAlignment(Textdraw2,0);
TextDrawAlignment(Textdraw3,0);
TextDrawBackgroundColor(Textdraw0,0x000000ff);
TextDrawBackgroundColor(Textdraw1,0x000000ff);
TextDrawBackgroundColor(Textdraw2,0x000000ff);
TextDrawBackgroundColor(Textdraw3,0x000000ff);
TextDrawFont(Textdraw0,2);
TextDrawLetterSize(Textdraw0,0.599999,1.100000);
TextDrawFont(Textdraw1,2);
TextDrawLetterSize(Textdraw1,0.599999,1.100000);
TextDrawFont(Textdraw2,2);
TextDrawLetterSize(Textdraw2,0.599999,1.100000);
TextDrawFont(Textdraw3,2);
TextDrawLetterSize(Textdraw3,0.599999,1.100000);
TextDrawColor(Textdraw0,0xffffffff);
TextDrawColor(Textdraw1,0xffffffff);
TextDrawColor(Textdraw2,0xffffffff);
TextDrawColor(Textdraw3,0xffffffff);
TextDrawSetOutline(Textdraw0,1);
TextDrawSetOutline(Textdraw1,1);
TextDrawSetOutline(Textdraw2,1);
TextDrawSetOutline(Textdraw3,1);
TextDrawSetProportional(Textdraw0,1);
TextDrawSetProportional(Textdraw1,1);
TextDrawSetProportional(Textdraw2,1);
TextDrawSetProportional(Textdraw3,1);
TextDrawSetShadow(Textdraw0,1);
TextDrawSetShadow(Textdraw1,1);
TextDrawSetShadow(Textdraw2,1);
TextDrawSetShadow(Textdraw3,1);
Unter OnPlayerDisconnected
TextDrawHideForPlayer(playerid,Textdraw0);
TextDrawHideForPlayer(playerid,Textdraw1);
TextDrawHideForPlayer(playerid,Textdraw2);
TextDrawHideForPlayer(playerid,Textdraw3);
OnPlayerSpawn
TextDrawShowForPlayer(playerid,Textdraw0);
TextDrawShowForPlayer(playerid,Textdraw1);
TextDrawShowForPlayer(playerid,Textdraw2);
TextDrawShowForPlayer(playerid,Textdraw3);
Unter OnPlayerDeath
if(pTeam == TEAM_GROVES)
{
GroveKills++;
}
if(pTeam == TEAM_BALLAS)
{
BallasKills++;
}
if(pTeam == TEAM_VAGOS)
{
VagosKills++;
}
if(pTeam == TEAM_TRIADS)
{
TraidsKills++;
}
TextDrawHideForAll(Textdraw0);
TextDrawHideForAll(Textdraw1);
TextDrawHideForAll(Textdraw2);
TextDrawHideForAll(Textdraw3);
TextDrawShowForAll(Textdraw0);
TextDrawShowForAll(Textdraw1);
TextDrawShowForAll(Textdraw2);
TextDrawShowForAll(Textdraw3);
Also ich bin kein Anfänger. Ich bin Pawno Profi, leider weiß ich nicht wieso mein server crasht.
Es ist keine Warning/Error im Gamemode drinn.
Server.log :
SA-MP Dedicated Server
----------------------
v0.3c R2, (C)2005-2011 SA-MP Team
[17:01:39] filterscripts = "" (string)
[17:01:39]
[17:01:39] Server Plugins
[17:01:39] --------------
[17:01:39] Loaded 0 plugins.
[17:01:39]
[17:01:39] Filter Scripts
[17:01:39] ---------------
[17:01:39] Loaded 0 filter scripts.
Alles anzeigen
Und In server.cfg alles richtig eingestellt.
Das Fehler gab eigentlich nicht nachdem ich Textdraw erstellt habe crasht das Server
Problem steht oben und hier die Crashcode:
SA-MP Server: 0.3c R2
Exception At Address: 0x004A4F64
Registers:
EAX: 0x00000000 EBX: 0x00000400 ECX: 0x00000100 EDX: 0x7EFEFEFF
ESI: 0x00000000 EDI: 0x0059E488 EBP: 0x00000001 ESP: 0x0018F860
EFLAGS: 0x00010206
Stack:
+0000: 0x029E0020 0x005620E0 0x0059E488 0x0047D14B
+0010: 0x0059E488 0x00000000 0x00000400 0x00557A40
+0020: 0x00000000 0x0018F8B8 0x005C5124 0x00000001
+0030: 0x0048850E 0x41400000 0x438C8000 0x00000000
+0040: 0x00557A40 0x00557A40 0x0059FBCC 0x029E0020
+0050: 0x00000000 0x005BAE6C 0x005A2AE0 0x00401096
+0060: 0x00557A40 0x005C5124 0x005A7EBC 0x00402BB3
+0070: 0x00557A40 0x0000001E 0x0018F8F0 0x005C5124
+0080: 0x0018FD80 0x00000000 0x00000000 0x00557A40
+0090: 0x00000000 0x0001D268 0x0001D268 0x0001D284
+00A0: 0x000192A0 0x0001D278 0x000192A0 0x0059FBCC
+00B0: 0x005A7EBC 0x00000000 0x0059F080 0x000082F0
+00C0: 0x004879BE 0x00557A40 0x0018FD70 0x00000028
+00D0: 0x4F5F4C52 0x6D61476E 0x646F4D65 0x696E4965
+00E0: 0x00480074 0x00557A40 0x00557A40 0x0059FBCC
+00F0: 0x00000000 0x00000000 0x00000000 0x00000000
+0100: 0x00000000 0x00000000 0x00000000 0x00000000
+0110: 0x00000000 0x00000000 0x00000000 0x00000000
+0120: 0x00000000 0x00000000 0x00000000 0x00000000
+0130: 0x00610074 0x00200072 0x00610047 0x0065006D
Alles anzeigen
#include <Dini>
-Es wird Dini Include aus der Ordner /pawno/include geholt.
new PlayerWeapons[12][MAX_PLAYERS]; // Das ist unser Weapons
new PlayerAmmo[12][MAX_PLAYERS] // Das ist unser Munition
new Datei[40] // Das ist unser Datei von derjenige Spieler
for(new w=0;w<13;w++) // Unser Slots
{
PlayerWeapons[w][playerid] = 0; // Waffe von der Spieler
PlayerAmmo[w][playerid] = 0; } // Die Munition von derjenige Waffe
format(Datei,sizeof(Datei),"%s.Weapons.txt",oGetPlayerName(playerid)); // Unser Ordner
if(!dini_Exists(Datei)) // Wenn der Datei nicht existiert
{
printf("no such file '%s'? created...", file); dini_Create(Datei); // Kommt in Server Console diese Nachricht
dini_Create(Datei); // Neue Datei wird erstellt also für derjenige Spieler der Connected hat.
}
}
for(new weap=0;weap<13;weap++) // Unser Slots
{
GetPlayerWeaponData(playerid,weap,PlayerWeapons[weap][playerid],PlayerAmmo[weap][playerid]); // Holt die Spieler Waffen und Muinition auf die Variablen
format(Datei,sizeof(Datei),"%s.Weapons.txt",oGetPlayerName(playerid)); // Ordner wird Formatiert also %s steht für Name der Spieler
new slotname[20]; // Neue Variable
format(slotname,sizeof(slotname),"Slot%d",weap); // %d steht für Slots, es geht bis 13
dini_IntSet(Datei,slotname,PlayerWeapons[weap][playerid]); // Datei wird verarbeitet. (Seine Waffen werden gespeichert)
new slotammo[20]; // Neue Variable
format(slotammo,sizeof(slotammo),"AmmoSlot%d",weap); // %d steht für Slots, es geht bis 13
dini_IntSet(Datei,slotammo,PlayerAmmo[weap][playerid]); // Datei wird verarbeitet. (Seine Muniton werden gespeichert)
}
for(new weap=0;weap<13;weap++) // 13 Slots
{
format(file,sizeof(file),"%s.Weapons.txt",oGetPlayerName(playerid));
new slotname[20]; // Ist gleiche wie oben
format(slotname,sizeof(slotname),"Slot%d",weap); // Ist gleiche wie oben
new slotammo[20]; // Ist gleiche wie oben
format(slotammo,sizeof(slotammo),"AmmoSlot%d",weap); // Ist gleiche wie oben
PlayerWeapons[weap][playerid] = strval(dini_Get(file, slotname)); // Der variable bekommt das Waffe aus der datei
PlayerAmmo[weap][playerid] = strval(dini_Get(file, slotammo)); // Der variable bekommt das Munition aus der datei
GivePlayerWeapon(playerid, PlayerWeapons[weap][playerid], PlayerAmmo[weap][playerid]); // Hier wird waffen zu spieler gegeben
}
stock oGetPlayerName(playerid) // Neue Pawno Befehl. Der Befehl nimmt den Namen der Spieler
{
new name[MAX_PLAYER_NAME]; // Neue Variable
GetPlayerName(playerid,name,sizeof(name)); // Holt den Spieler name
return name;
}
Inhalt
-Was wird gebraucht ?
-Vorführung
-Einleitung
Was wird gebraucht ?
Ihr braucht nur Dini Include.
Download: http://dracoblue.net/download/dini-16/35/
Ihr fügt nur das Dini.inc auf Ordner /pawno/includes ein.
Vorführung
Ihr öffnet ein Neues Ordner in /scriptfiles
Und der Ordnername soll Weapons heißen
Einleitung
Ganz oben im Script fügt ihr das Dini Include ein.
#include <Dini>
Dann wieder oben die Variablen einfügen
new PlayerWeapons[12][MAX_PLAYERS];
new PlayerAmmo[12][MAX_PLAYERS];
new Datei[40]
Unter OnPlayerConnect diese Code einfügen
for(new w=0;w<13;w++)
{
PlayerWeapons[w][playerid] = 0;
PlayerAmmo[w][playerid] = 0;
}
format(Datei,sizeof(Datei),"%s.Weapons.txt",oGetPlayerName(playerid));
if(!dini_Exists(Datei))
{
printf("no such file '%s'? created...", file);
dini_Create(Datei);
}
Unter OnPlayerDisconnect fügt ihr diese Code ein.
for(new weap=0;weap<13;weap++)
{
GetPlayerWeaponData(playerid,weap,PlayerWeapons[weap][playerid],PlayerAmmo[weap][playerid]);
format(Datei,sizeof(Datei),"%s.Weapons.txt",oGetPlayerName(playerid));
new slotname[20];
format(slotname,sizeof(slotname),"Slot%d",weap);
dini_IntSet(Datei,slotname,PlayerWeapons[weap][playerid]);
new slotammo[20];
format(slotammo,sizeof(slotammo),"AmmoSlot%d",weap);
dini_IntSet(Datei,slotammo,PlayerAmmo[weap][playerid]);
}
Und Unter OnPlayerSpawn
for(new weap=0;weap<13;weap++)
{
format(file,sizeof(file),"%s.Weapons.txt",oGetPlayerName(playerid));
new slotname[20];
format(slotname,sizeof(slotname),"Slot%d",weap);
new slotammo[20];
format(slotammo,sizeof(slotammo),"AmmoSlot%d",weap);
PlayerWeapons[weap][playerid] = strval(dini_Get(file, slotname));
PlayerAmmo[weap][playerid] = strval(dini_Get(file, slotammo));
GivePlayerWeapon(playerid, PlayerWeapons[weap][playerid], PlayerAmmo[weap][playerid]);
}
Anschließend diese Code ganz unten im Script
stock oGetPlayerName(playerid)
{
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
return name;
}
Scriptet by me
LottoSystem
Befehle
/lottohelp
/lotto
Informationen
Es werden immer wieder in 10 Minuten Lotto startet.
Und immer wieder in 9 Minuten wird Game Text kommen.
Download
Pastebin: http://pastebin.com/LChMD7GS
Mediafire: http://www.mediafire.com/?y737o5uu7d9ovdc
Erst OCMD herunterladen und in Ordner /pawno/includes/ legen.
ocmd: http://uploaded.to/file/y8yffe
GameMode öffnen (mit Pawno).
Ganz oben im Script diese Code einfügen:
#include <ocmd>
und ganz unten fügst du sscanf code ein:
stock sscanf(string[], format[], {Float,_}:...) { #if defined isnull if (isnull(string)) #else if (string[0] == 0 || (string[0] == 1 && string[1] == 0)) #endif { return format[0]; } #pragma tabsize 4 new formatPos = 0, stringPos = 0, paramPos = 2, paramCount = numargs(), delim = ' '; while (string[stringPos] && string[stringPos] <= ' ') { stringPos++; } while (paramPos < paramCount && string[stringPos]) { switch (format[formatPos++]) { case '\0': { return 0; } case 'i', 'd': { new neg = 1, num = 0, ch = string[stringPos]; if (ch == '-') { neg = -1; ch = string[++stringPos]; } do { stringPos++; if ('0' <= ch <= '9') { num = (num * 10) + (ch - '0'); } else { return -1; } } while ((ch = string[stringPos]) > ' ' && ch != delim); setarg(paramPos, 0, num * neg); } case 'h', 'x': { new num = 0, ch = string[stringPos]; do { stringPos++; switch (ch) { case 'x', 'X': { num = 0; continue; } case '0' .. '9': { num = (num << 4) | (ch - '0'); } case 'a' .. 'f': { num = (num << 4) | (ch - ('a' - 10)); } case 'A' .. 'F': { num = (num << 4) | (ch - ('A' - 10)); } default: { return -1; } } } while ((ch = string[stringPos]) > ' ' && ch != delim); setarg(paramPos, 0, num); } case 'c': { setarg(paramPos, 0, string[stringPos++]); } case 'f': { new changestr[16], changepos = 0, strpos = stringPos; while(changepos < 16 && string[strpos] && string[strpos] != delim) { changestr[changepos++] = string[strpos++]; } changestr[changepos] = '\0'; setarg(paramPos,0,_:floatstr(changestr)); } case 'p': { delim = format[formatPos++]; continue; } case '\'': { new end = formatPos - 1, ch; while ((ch = format[++end]) && ch != '\'') {} if (!ch) { return -1; } format[end] = '\0'; if ((ch = strfind(string, format[formatPos], false, stringPos)) == -1) { if (format[end + 1]) { return -1; } return 0; } format[end] = '\''; stringPos = ch + (end - formatPos); formatPos = end + 1; } case 'u': { new end = stringPos - 1, id = 0, bool:num = true, ch; while ((ch = string[++end]) && ch != delim) { if (num) { if ('0' <= ch <= '9') { id = (id * 10) + (ch - '0'); } else { num = false; } } } if (num && IsPlayerConnected(id)) { setarg(paramPos, 0, id); } else { #if !defined foreach #define foreach(%1,%2) for (new %2 = 0; %2 < MAX_PLAYERS; %2++) if (IsPlayerConnected(%2)) #define __SSCANF_FOREACH__ #endif string[end] = '\0'; num = false; new name[MAX_PLAYER_NAME]; id = end - stringPos; foreach (Player, playerid) { GetPlayerName(playerid, name, sizeof (name)); if (!strcmp(name, string[stringPos], true, id)) { setarg(paramPos, 0, playerid); num = true; break; } } if (!num) { setarg(paramPos, 0, INVALID_PLAYER_ID); } string[end] = ch; #if defined __SSCANF_FOREACH__ #undef foreach #undef __SSCANF_FOREACH__ #endif } stringPos = end; } case 's', 'z': { new i = 0, ch; if (format[formatPos]) { while ((ch = string[stringPos++]) && ch != delim) { setarg(paramPos, i++, ch); } if (!i) { return -1; } } else { while ((ch = string[stringPos++])) { setarg(paramPos, i++, ch); } } stringPos--; setarg(paramPos, i, '\0'); } default: { continue; } } while (string[stringPos] && string[stringPos] != delim && string[stringPos] > ' ') { stringPos++; } while (string[stringPos] && (string[stringPos] == delim || string[stringPos] <= ' ')) { stringPos++; } paramPos++; } do { if ((delim = format[formatPos++]) > ' ') { if (delim == '\'') { while ((delim = format[formatPos++]) && delim != '\'') {} } else if (delim != 'z') { return delim; } } } while (delim > ' '); return 0; }
und als nächstet zwichen OnPlayerCommandText und OnPlayerText fügst du diese Code ein:
ocmd:veh(playerid,params[])
{
new vehid, color1, color2;
if(sscanf(params,"ddd",vehid,color1,color2)) return SendClientMessage(playerid,0xFF0000FF,"Verwendung: /veh [VehicleID] [Color] [Color2]");
{
if(vehid > 611 || vehid < 400 || color1 > 252 || color1 < 0 || color2 > 252 || color2 < 0)
{
SendClientMessage(playerid,0xFF0000FF,"Vehicle ID (400-611) | Color ID (0-252)");
}
else {
new Float:x, Float:y, Float:z, Float:a;
GetPlayerPos(playerid,x,y,z);
GetPlayerFacingAngle(playerid,a);
CreateVehicle(vehid,x+1,y+1,z,a,color1,color2,50000000000);
}
}
return 1;
}