Dafür brauchst du ein Spielerarray oder du erweiterst dein enum welches SInfo als index dient um einen variable.
so kannst du diese abfragen mit einer if abfrage in der funktion ob die variable den wert 1 hat oder 0 . Sollte sie zum beispiel den wert 1 haben so führst du den code von aoffd was nach der abfrage kommt ob der spieler ein admin ist oder nicht
Beiträge von IPrototypeI
-
-
Das was du gepostet hast ist nicht mysql_getfloat
Vergleich jedoch mal die datentypen der Parameter der Funktion mit deinen die du nutzt -
Also normal ist nix falsch an dem Code wird dem Bot überhaupt ein Label attached und ist er im richtigen Interior ?
-
IPrototypeI:
geht nicht
Das funktioniert schon nur hast du ein Fehler gemacht, hast du auch zum Test ein neues Fahrzeug erstellt.
Dem Code an der richtigen Position eingefügt etc... -
Normal machst du das bei OnPlayerSpawn mit der Funktion SetPlayerSkin, jedoch geht aus dem Code den du gepostet hast nicht das Callback hervor, welches du hier nutzt.
-
Naja mit den Plugins, ich wusste nicht so wirklich nach was ich suchen soll..
och kom schonHier sind 303 Plugins releast mit Source, man brauchst sich nur die Funktionsparameter der Funktionen anschauen und überlegen ob hier etwas zurück gegeben
oder was gesetzt wird, danach kannst im Source nach der Funktion suchen.Bei manchen Projekten kannst du dir den Source auch auf Github anschauen.
http://forum.sa-mp.com/forumdisplay.php?f=18
Es gibt paar Tutorials dazu nur frage ich mich wie du das genau meinst mit dne Funktionen, meist du das nutzen von Samp Funktionen, dazu gibt es ja
Samp GDK
https://github.com/Zeex/sampgdkhttp://forum.sa-mp.com/showthread.php?t=295798
http://forum.sa-mp.com/showthread.php?t=253436Wenn du jetzt neue Funktionen implementieren möchtest, wie zum Beispiel bei diesem Plugin benötigst du Kenntnisse im reversen von Adressen.
http://forum.sa-mp.com/showthread.php?t=513499//edit wenn das dir nicht weiter geholfen hat , beschreib doch einfach mal was du genau machen möchtest
-
Du bist witzig..ich find die selber nicht und ich hab dir oben sogar alles mit mysql gepostet
Das Problem ist das du den Primärschlüssel deiner Userdatenbank (hier die 220) nicht ausließt.
Am besten wäre es wenn du einfach dein enum für das Array SpielerInfo um eine variabel erweiterst.enum pInfo
{
pID, <== Hier ergänzen
pName[MAX_PLAYER_NAME],
pLevel,
pGeld,
pKills,
....
}Dann kannst du den Primärschlüssel noch auslesen, beim laden der Spielerdaten.
SpielerInfo[playerid][pID] = mysql_GetInt("accounts", "id", "Name", SpielerInfo[playerid][pName]);Nun kannst du bei deinem Insert-query das ganze so verwenden und hast nun den Primärschlüssel als Fremdschlüssel in diesem Eintrag.
format(query,sizeof(query),"INSERT INTO autos (besitzer,x,y,z,r,model) VALUES ('%i','%f','%f','%f','%f','%i')",SpielerInfo[playerid][pID],cInfo[carid][model],cInfo[carid][c_x],cInfo[carid][c_y],cInfo[carid][c_z],cInfo[carid][c_r]);
Das ganze geht natürlich noch kürzer nur musst du dafür wissen was ein Join ist und wie man über mehrere Tabellen hinweg arbeitet.
-
@Nova_:
Wenn ich dir schon über Skype helfe dann nimm bitte das von @|Prototype|: und mir an.
Benutz das R5 Plugin + Die Linux version die du hier finden kannst: klick mich
Naja er kann auch die R8 Version nutzen nur muss er sein Skript umschreiben.
Aber da würde ich schon die neuste verwenden falls er es umschreiben möchte die R39 Version. -
Mensch Leute, er verwendet das Falsche Plugin darin liegt das Problem die R8 Version verwendet andere natives als die älteren als R5 oder R6.
Da jedoch dein Skript nicht auf dem R8 oder höher basiert werden natives aufgerufen, welche nicht existiert somit bekommst du den runtime Error.Daher nutz die älteren Versionen R5 oder R6
Download:
http://forum.sa-mp.com/showthread.php?t=56564//edit
Dort oben in der Include steht ja auch nochmal für, welches Plugin die Include ist
ZitatSA-MP MySQL plugin R5
-
Also ich glaub das sich da eher keiner finden lässt und du etwas bezahlen musst um die Plugins bei jemanden Entwickeln zu lassen, da Plugins für Bukkit/Spigot zu schreiben nicht gerade so einfach ist. Sonst könnte es ja jeder. Du musst zum einen Java beherrschen und zum anderen die Methoden und ihre Anwendung kennen (Die Dokumentaion ist recht scheiße). Das blöde ist hier das es nicht gerade wenig Methoden gibt.
Jedoch stirbt die Hoffnung zuletzt :D.
-
Können ja mal die tage InGame daran herum popeln wenn su magst!
Ja das können wir wenn du möchtest. -
Ich finde es gut das du solch ein Tutorial machst zwar ist es noch ausbaufähig.
Jedoch mach ich noch paar Anmerkungen/Informationen:
- Manche haben das Problem mit gewissen .dll`s (msvcp110.dll, msvcr110.dll etc...), diese muss kann man downloaden und in den Samp-Server-Ordner verschieben oder ganz einfach microsoft visual c++ redistributable updaten.
- Ebenso kannst du noch ein Beispiel hinzunehmen wie man einen String ausließt das wissen auch nicht die meisten.
- cache_get_data(num_rows, num_fields); kann man nutzen jedoch gibt es schon lange cache_get_field_count(); was um einiges effizenter ist.#
- Nutze mysql_pquery anstelle von mysql_tquery da dieses um einiges schneller ist.
- Zusätzlich kannst du bei mysql_connect die Anzahl der maximalen Verbindungen als Threads einstellen.
-
Es gibt im Englischen Forum auch paar releaste Skripts, welche auf C++ basieren.
http://forum.sa-mp.com/showthread.php?t=465909
http://forum.sa-mp.com/showthread.php?t=502584
http://forum.sa-mp.com/showthread.php?t=490143123marvin123 Ich finde es irgendwie lustig, wie du die leute dazu bekehren möchtest die Java Api zu nutzen
im großen und ganzen keine schlechte Idee und bietet weitaus mehr Möglichkeiten als PAWN. Nur sind die standart implementieren Funktionen bei weitem schneller als die ,welche über die Api ausgeführt werden und die Performance kann man durch den JIT Kompiler nochmals um einiges erhöhen ^^. -
Die Map ist echt gut geworden, ich hatte schon die Möglichkeit, dass ganze Live zu betrachten auf dem oben genannten Testserver.
Nur sagt mir das Wasserspiel nach wie vor nicht so zu :D. -
IPrototypeI:
Das mit dem Native weiß ich ja, ich wöllte nur wissen wie ich in c++ dann damit weiter arbeite da ich nicht so wirklich was gefunden habe dazu.
Und wie ich string dann wieder am gm weitergebe. könntest du mir da ein kleines beispiel schreiben?Kannst ja mal das ganze Testen sollte normal so funktionieren
char *SaveString; //globale Variable
//native SetString(string[]);
static cell AMX_NATIVE_CALL SetString( AMX* amx, cell* params )
{
amx_StrParam(amx, params[1], SaveString);
return 1;
}
//native GetString(string[], len = sizeof(string));
static cell AMX_NATIVE_CALL GetString( AMX* amx, cell* params )
{
cell *dest = NULL;
amx_GetAddr(amx, params[1], &dest);
amx_SetString ( dest, SaveString, 0, 0, params[2]);
return 1;
}//edit mal so nebensächlich du kannst auch mal bestehende Plugins auseinander nehmen und versuchen diese zu verstehen
-
Wie kann man pickups per "Enter" aktivierbar machen ?
Wie ist das zu verstehen? Das du zum Beispiel in ein Interior geportet wird.
Dazu benötigst du das Callback OnPlayerKeyStateChangehttp://wiki.sa-mp.com/wiki/OnPlayerKeyStateChange
Wenn der Spieler jetzt enter drückt musst du die Positionen abgleichen, welche du ein einem Array hast
static const Float:PickupsCps[][6] = {
{0.0,0.0,0.0,16.0,15.0,522.0}},
{16.0,15.0,522.0,0.0,0.0,0.0},
}public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
if (newkeys & KEY_SECONDARY_ATTACK )
{
for(new i; i != sizeof(PickupsCps); ++i)
{
if(IsPlayerInRangeOfPoint(playerid,3.0,PickupsCps[0],PickupsCps[1],PickupsCps[2])return SetPlayerPos(playerid,PickupsCps[3],PickupsCps[4],PickupsCps[5]);
}
}
return 1;
}
Die Tasten findest du hier
http://wiki.sa-mp.com/wiki/KeysMal ne Frage,
Wenn ich ein plugin schreibe, und z.B. einen String an das Plugin übergebe und dort verändere,
wie kann ich dann den String vom Plugin wieder an den Gamemode zurück geben?Indem du den String als Funktionsparameter zurück gibst dazu musst du amx_GetAddr + amx_SetString nutzen.
was ist gemeint :
native GetString(string[]);Hätte hier jemand eine kleine Erklärung dazu?
Mit parallel ist gemeint das die Daten gleichzeitig verarbeitet werden sowas wird auch threaded genannt.
Nun zum Unterschied zwischen mysql_tquery und mysql_pquery laut dem wiki Eintrag soll mysql_pquery multi-threaded sein.
Es ist etwas verwirrent in den älteren Versionen war es so das mysql_tquery für threaded-queries genutzen wurde und mysql_function_query für
nicht threaded queries.Wenn du auf die Github seute schaust wirst du schon die R39 Version finden
https://github.com/pBlueG/SA-MP-MySQL/releases -
Wenn du das params[1] entfernst solltest du auch den specifer i entfernen , dieser wird hier nicht genutz.
if(sscanf(params,"u",params[0])) return SendClientMessage(playerid,-1,""COL_LIGHTBLUE"Verwendung:{FFFFFF} /explode <ID/Name>"); -
Kannst du das ausführlicher erklären bitte :s ?
Also der Grund, wieso das Ganze nicht eingestreamt wird liegt darin, dass der Spieler mindestens 1 mal gespawnt werden muss.
Jedoch gibt es eine Funktionen mit dem Namen Streamer_UpdateEx, mit der du die Objekte in einem Feld für den Spieler streamen lassen kannst.Syntax
Streamer_UpdateEx(playerid, Float:x, Float:y, Float:z, worldid = -1, interiorid = -1);siehe auch :
http://forum.sa-mp.com/showthread.php?t=102865Verwendungsbeispiel:
public OnPlayerRequestClass(playerid, classid)
{
Streamer_UpdateEx(playerid,1117.58594, -1490.00781, 32.71875);
TogglePlayerSpectating(playerid,false);
SetPlayerPos(playerid,1126.8378, -1386.0857, 46.8765);
SetPlayerCameraPos(playerid, 1126.8378, -1386.0857, 46.8765);
SetPlayerCameraLookAt(playerid, 1123.0604, -1427.7638, 34.2935);
return 1;
} -
Normal sollten die Objekte eingeatreamt werden du benutz hoffentlich TogglePlayerSpectating.
Ein möglichkeit wäre die objekte für den spieler in dem umfels zu laden Streamer_Update (playerid) -
Ich hab schon verstanden was er meint...genau das meine ich auch
Was Winston_Churchill hier meint ist das du einfach die funktionen hookst also GivePlayerMoney, GetPlayerMoney und eventuell
ResetPlayerMoney und über GetPlayerMoney einfach abfrägst ob das geld der variabel entspricht.
Was du zusätzlich dazu machen musst ist dem spieler im paintspray und in der tunning garage den wert der serverseitigen variabel zu setzen
entweder du passt den wert einfach an unter OnEnterExitModShop oder direkt bei OnVehicleMod und bei den paint'n sprays da kannst du zonen erstellen über das Streamer Plugin