Alle Befehle funktionieren nicht
Beiträge von ChrisJewels
-
-
Nein die Server log gibt nix aus.
Was mir halt aufgefallen ist ist das der /teleport befehl befor die IsAdmin Abfrage erstellt wurde funktioniert hat.
-
Hallo Leute,
und zwar habe ich ein Problem am Script da mein Computer nach einer Virusattacke komplett im Arsch war habe ich mich nach einiger Zeit nochmal neu ans Scripten drangesetzt.
Jetzt habe ich aber das Problem das der Server keine SendClientMessage mehr sendet ich versteh jetzt auch nicht wo dran es liegt villeicht bin ich auch nur zu blind das Problem zu finden.
Es wäre toll wenn Ihr da was findet
/* BIG CITY REALLIFE SCRIPT
erstellt von DarkAngel*///INCLUDE
#include <a_samp>
#include <ocmd>
#include <sscanf2>
#include <a_mysql>//MYSQL Datenbank
#define db_host "----"
#define db_user "---"
#define db_pass "----"
#define db_db "-----"//FARBEN
#define Willkommen 0x00FF78FF
#define PN 0x787878FF
#define INFO 0xFFA000FF
#define ABBRUCH 0xFF4600FF
#define OK 0x21C000FF
#define FEHLER 0xFF0A00FF
#define ADMIN 0xB400FFFF
#define ERFOLG 0x0FFF00FF//DIALOG
#define DRegistrierung 1
#define DLogin 2
#define DTeleport 3//ENUMS
enum SpielerInfo{
eingeloggt,
level,
id,
alevel
}//GLOBALE VARIABLEN
new MySQL;
new sInfo[MAX_PLAYERS][SpielerInfo];//FORWARD
forward OnUserCheck(playerid);
forward OnPasswortResponse(playerid);main()
{
print("----------------------------------------------");
print("Dieses Script ist erstellt worden von DarkAngel");
print("Dieses Script ist nur für den BigCityReallife");
print("----------------------------------------------");
}public OnGameModeInit()
{
SetGameModeText("BigCityReallife");
MySQL = mysql_connect(db_host,db_user,db_db,db_pass);
AddPlayerClass(1,-1958.1277,139.3322,27.6940,267.5759, 0, 0, 0, 0, 0, 0);
AddPlayerClass(2,-1958.1277,139.3322,27.6940,267.5759, 0, 0, 0, 0, 0, 0);
AddPlayerClass(3,-1958.1277,139.3322,27.6940,267.5759, 0, 0, 0, 0, 0, 0);
AddPlayerClass(4,-1958.1277,139.3322,27.6940,267.5759, 0, 0, 0, 0, 0, 0);
AddPlayerClass(6,-1958.1277,139.3322,27.6940,267.5759, 0, 0, 0, 0, 0, 0);
AddPlayerClass(7,-1958.1277,139.3322,27.6940,267.5759, 0, 0, 0, 0, 0, 0);return 1;
}public OnGameModeExit()
{
return 1;
}public OnPlayerRequestClass(playerid, classid)
{
SetPlayerPos(playerid, -1917.4500,205.0122,35.1563);
SetPlayerCameraPos(playerid, -1912.3405,210.4128,35.1563);
SetPlayerCameraLookAt(playerid, -1917.4500,205.0122,35.1563);
SetPlayerFacingAngle(playerid,317.5413);
return 1;
}public OnPlayerConnect(playerid)
{
//LOGIN/REGISTER
new name[MAX_PLAYER_NAME],query[128];
GetPlayerName(playerid,name,sizeof(name));
format(query,sizeof(query),"SELECT id FROM user WHERE username='%s'",name);
mysql_function_query(MySQL,query,true,"OnUserCheck","i",playerid);
return 1;
}public OnPlayerDisconnect(playerid, reason)
{
savePlayer(playerid);
resetPlayer(playerid);
return 1;
}public OnPlayerSpawn(playerid)
{
SetPlayerPos(playerid,-1951.8358,144.6791,26.2813);
return 1;
}public OnPlayerDeath(playerid, killerid, reason)
{
return 1;
}public OnVehicleSpawn(vehicleid)
{
return 1;
}public OnVehicleDeath(vehicleid, killerid)
{
return 1;
}public OnPlayerText(playerid, text[])
{
return 1;
}public OnPlayerCommandText(playerid, cmdtext[])
{return 0;
}public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
return 1;
}public OnPlayerExitVehicle(playerid, vehicleid)
{
return 1;
}public OnPlayerStateChange(playerid, newstate, oldstate)
{
return 1;
}public OnPlayerEnterCheckpoint(playerid)
{
return 1;
}public OnPlayerLeaveCheckpoint(playerid)
{
return 1;
}public OnPlayerEnterRaceCheckpoint(playerid)
{
return 1;
}public OnPlayerLeaveRaceCheckpoint(playerid)
{
return 1;
}public OnRconCommand(cmd[])
{
return 1;
}public OnPlayerRequestSpawn(playerid)
{
return 1;
}public OnObjectMoved(objectid)
{
return 1;
}public OnPlayerObjectMoved(playerid, objectid)
{
return 1;
}public OnPlayerPickUpPickup(playerid, pickupid)
{
return 1;
}public OnVehicleMod(playerid, vehicleid, componentid)
{
return 1;
}public OnVehiclePaintjob(playerid, vehicleid, paintjobid)
{
return 1;
}public OnVehicleRespray(playerid, vehicleid, color1, color2)
{
return 1;
}public OnPlayerSelectedMenuRow(playerid, row)
{
return 1;
}public OnPlayerExitedMenu(playerid)
{
return 1;
}public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
{
return 1;
}public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
return 1;
}public OnRconLoginAttempt(ip[], password[], success)
{
return 1;
}public OnPlayerUpdate(playerid)
{
return 1;
}public OnPlayerStreamIn(playerid, forplayerid)
{
return 1;
}public OnPlayerStreamOut(playerid, forplayerid)
{
return 1;
}public OnVehicleStreamIn(vehicleid, forplayerid)
{
return 1;
}public OnVehicleStreamOut(vehicleid, forplayerid)
{
return 1;
}public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid==DRegistrierung)
{
if(response)
{
new name[MAX_PLAYER_NAME],query[128],passwort[35];
GetPlayerName(playerid,name,sizeof(name));
if(strlen(inputtext)>=3)
{
mysql_escape_string(inputtext,passwort,MySQL);
format(query,sizeof(query),"INSERT INTO user (username,password) VALUES ('%s',MD5('%s'))",name,passwort);
mysql_function_query(MySQL,query,false,"","");
}
else
{
SendClientMessage(playerid,FEHLER,"FEHLER:Dein Passwort ist zu kurz gebe bitte ein Passwort an was größer als 3 Zeichen ist");
ShowPlayerDialog(playerid,DRegistrierung,DIALOG_STYLE_INPUT,"REGISTRATION","Herzlich Willkommen auf BigCityReallife\nDein Passwort war zu kurz bitte gebe ein Passwort an das Größer als 3 Zeichen ist an\nGebe Niemals dein Passwort an dritte weiter",
"OK","ABBRECHEN");
}
}
else
{
Kick(playerid);
}
return 1;
}
if(dialogid==DLogin)
{
if(response)
{
new name[MAX_PLAYER_NAME],query[128],passwort[35];
GetPlayerName(playerid,name,sizeof(name));
if(strlen(inputtext)>0)
{
mysql_escape_string(inputtext,passwort,MySQL);
format(query,sizeof(query),"SELECT * FROM user WHERE username='%s' AND password=MD5('%s')",name,passwort);
mysql_function_query(MySQL,query,true,"OnPasswortResponse","i",playerid);
}
else
{
SendClientMessage(playerid,FEHLER,"FEHLER:Das eingegeben Passwort war Fehlerhaft oder wurde nicht richtig eingegeben");
ShowPlayerDialog(playerid,DLogin,DIALOG_STYLE_PASSWORD,"LOGIN","Herzlich Willkommen zurück auf BigCityReallife\nDu hast dein Passwort Fehlerhaft oder nicht richtig eingegeben\nBitte logge dich ein","LOGIN","ABBRUCH");
}
}
else
{
Kick(playerid);
}
return 1;
}
if(dialogid==DTeleport)
{
if(response)
{
if(listitem==0)
{
//SPAWN
SetPlayerPos(playerid,-1958.1277,139.3322,27.6940);
SendClientMessage(playerid,OK,"Teleportvorgang ist erfolgt");
}
if(listitem==1)
{
//AUTOHAUS1
SetPlayerPos(playerid,-1958.1277,139.3322,27.6940);
SendClientMessage(playerid,OK,"Teleportvorgang ist erfolgt");
}
}
else
{
SendClientMessage(playerid,ABBRUCH,"SERVER:Teleportvorgang Abgebrochen");
}
return 1;
}
return 1;
}public OnPlayerClickPlayer(playerid, clickedplayerid, source)
{
return 1;
}public OnUserCheck(playerid)
{
new num_rows,num_fields;
cache_get_data(num_rows,num_fields,MySQL);
if(num_rows==0)
{
//REGISTRIERUNG
ShowPlayerDialog(playerid,DRegistrierung,DIALOG_STYLE_INPUT,"REGISTRATION","Herzlich Willkommen auf BigCityReallife\nDein Account wurde leider noch nicht in unserer Datenbank gefunden.\nDamit du schnell hier spielen kannst gebe bitte dein Passwort ein\n Gebe Niemals dein Passwort an dritte weiter",
"OK","ABBRECHEN");
}
else
{
//LOGIN
ShowPlayerDialog(playerid,DLogin,DIALOG_STYLE_PASSWORD,"LOGIN","Herzlich Willkommen zurück auf BigCityReallife\nDein Account wurde in der Datenbank gefunden\nBitte logge dich ein","LOGIN","ABBRUCH");
}
return;
}public OnPasswortResponse(playerid)
{
new num_fields,num_rows;
cache_get_data(num_rows,num_fields,MySQL);
if(num_rows==1)
{
sInfo[playerid][eingeloggt] = 1;
sInfo[playerid][level] = cache_get_field_content_int(0,"level",MySQL);
sInfo[playerid][id] = cache_get_field_content_int(0,"id",MySQL);
SetPlayerScore(playerid,sInfo[playerid][level]);
SetPlayerMoney(playerid,cache_get_field_content_int(0,"money",MySQL));
sInfo[playerid][alevel] = cache_get_field_content_int(0,"alevel",MySQL);
}
else
{
SendClientMessage(playerid,FEHLER,"SERVER:Dein eingegebnes Passwort ist Falsch");
ShowPlayerDialog(playerid,DLogin,DIALOG_STYLE_PASSWORD,"LOGIN","Herzlich Willkommen zurück auf BigCityReallife\nDein Account wurde in der Datenbank gefunden\nBitte logge dich ein","LOGIN","ABBRUCH");}
return 1;
}savePlayer(playerid)
{
if(sInfo[playerid][eingeloggt]==0)return 1;
new query[128];
format(query,sizeof(query),"UPDATE user SET level='%i',money='%i',alevel='%i' WHERE id='%i'",sInfo[playerid][level],GetPlayerMoney(playerid),sInfo[playerid][alevel],sInfo[playerid][id]);
mysql_function_query(MySQL,query,false,"","");
return 1;
}resetPlayer(playerid)
{
sInfo[playerid][eingeloggt]=0;
sInfo[playerid][level]=0;
sInfo[playerid][id]=0;
return 1;
}SetPlayerMoney(playerid,money)
{
ResetPlayerMoney(playerid);
GivePlayerMoney(playerid,money);
return 1;
}//ADMINABFRAGE
isAdmin(playerid,a_level)
{
if(sInfo[playerid][alevel]>=a_level)return 1;
return 0;
}
//ADMINBEFEHLE
ocmd:teleport(playerid,params[])
{
if(!isAdmin(playerid,2))return SendClientMessage(playerid,ADMIN,"Du bist kein [BCR] Teammitglied oder dein Rang ist zu niedrig");
ShowPlayerDialog(playerid,DTeleport,DIALOG_STYLE_LIST,"TELEPORT","Spawn\nAutohaus1","OK","ABBRECHEN");
return 1;
}ocmd:admin(playerid,params[])
{
new pID,a_level,string[128],string2[128];
if(!isAdmin(playerid,6))return SendClientMessage(playerid,ADMIN,"Du bist kein [BCR] Teammitglied oder dein Rang ist zu niedrig");
format(string,sizeof(string),"Dein Adminrang wurde auf Rang:'%i' geändert.",a_level);
format(string2,sizeof(string2),"Der Adminrang des Spielers wurde erfolgreich auf Rang:'%i' geändert.",a_level);
if(sscanf(params,"ui",pID,a_level))return SendClientMessage(playerid,INFO,"INFO:/admin [playerid][adminrang]");
sInfo[pID][alevel]=a_level;
savePlayer(pID);
SendClientMessage(pID,ERFOLG,string);
SendClientMessage(playerid,ERFOLG,string2);
return 1;
}ocmd:aduty(playerid,params[])
{
if(!isAdmin(playerid,1))
{
SendClientMessage(playerid,ADMIN,"Du bist kein [BCR] Teammitglied oder dein Rang ist zu niedrig");
}
else
{
SetPlayerColor(playerid,ADMIN);
SetPlayerSkin(playerid,61);
SendClientMessage(playerid,ADMIN,"Du bist nun im Admindienst");
}
return 1;
}//SPIELRBEFEHLE
ocmd:pn(playerid,params[])
{
new pID,text[128];
if(sscanf(params,"us[128]",pID,text))return SendClientMessage(playerid,INFO,"INFO:/pn [playerid][text]");
SendClientMessage(pID,PN,text);
SendClientMessage(playerid,PN,text);
return 1;
}
//FRAKTIONSBEFEHLE -
Alles schön und gut und auch verständlich aber was zum Himmel meinst du mit dem DROT Pawno versteht das bei mir nicht
Codenew string[128]; format(string,sizeof(string),"%s hat Hilfe angefordert! Kategorie:Beschwerde über einen User!",getPlayerName(playerid)); SendAdminMessage(DROT,string); format(string,sizeof(string),"Report-Text: %s",inputtext); SendAdminMessage(DROR,string); SendClientMessage(playerid,Color_Green,"Deine Beschwerde über einen User wird nun überprüft ein Admin wird sich für weiter Fragen eventuell bei dir melden");
C:\Users\Chris\Desktop\SAMP Server\gamemodes\script.pwn(1808) : error 017: undefined symbol "DROT"
C:\Users\Chris\Desktop\SAMP Server\gamemodes\script.pwn(1810) : error 017: undefined symbol "DROR"
C:\Users\Chris\Desktop\SAMP Server\gamemodes\script.pwn(1826) : error 017: undefined symbol "DROT"
C:\Users\Chris\Desktop\SAMP Server\gamemodes\script.pwn(1828) : error 017: undefined symbol "DROT"
C:\Users\Chris\Desktop\SAMP Server\gamemodes\script.pwn(1844) : error 017: undefined symbol "DROT"
C:\Users\Chris\Desktop\SAMP Server\gamemodes\script.pwn(1846) : error 017: undefined symbol "DROT" -
Kann's nicht testen aber ich würde es so machen.
Mit einer Warnung falls ein Admin mit dem gleichen oder einem niedrigerem Level versucht ein Admin zu bannenDanke dir JustMe ich habs mir so eingefügt werde es nachher mal austesten komm jetzt noch nicht dazu
-
Zeig mal dein Ban Befehl her
Code
Alles anzeigenocmd:ban(playerid,params[]) { if(!isAdmin(playerid,3))return SendClientMessage(playerid,Color_Red,"Du bis kein GJ Teammitglied oder dein Admin Level ist zu niedrig"); new banid,bangrund[60]; if(sscanf(params,"uds",banid,bangrund))return SendClientMessage(playerid, Color_Orange,"INFO: /setwarn[Name/ID][Ban-Grund]"); if(!IsPlayerConnected(banid))return SendClientMessage(playerid,Color_Red,"FEHLER:Der angegebene Spieler ist nicht online"); if(strlen(bangrund)<=5)return SendClientMessage(playerid,Color_Red,"FEHLER:Bangrund zu kurz[Mindestens 5 Zeichen]"); if(strlen(bangrund)>60)return SendClientMessage(playerid,Color_Red,"FEHLER:Bangrund zu lang[MAX. 60 Zeichen]"); { new string[150]; format(string,sizeof(string),"Du hast den Spieler %s aus dem Grund %s dauerhaft vom Projekt ausgeschlossen!",getPlayerName(banid),bangrund); SendClientMessage(playerid,Color_Green,string); format(string,sizeof(string),"Du wurdest von %s dauerhaft aus dem Projekt ausgeschlossen! Grund: %s",getPlayerName(playerid),bangrund); SendClientMessage(banid,Color_Red,string); Ban(banid); format(string,sizeof(string),"%s hat %s vom Server gebannt",getPlayerName(playerid),getPlayerName(banid)); SendClientMessageToAll(Color_Brown,string); } return 1; }
Das ist der Banbefehl
-
Du kannst für beides eine Abfrage schreiben, aber für letzteres gibt es nur ein "Level", deswegen könntest du eine Abfrage schreiben wo verhindert wird das sich Admins gegenseitig warnen können.
Danke erstmal für die Schnelle Hilfe.
Hast du den Codeabschnitt an dein eigenem Admin System angepasst oder ist der Befehl weiterhin nur für RCON Admins verfügbar?
Anbei habe ich meine Abfrage eingefügt mit dem ich das Level eines Admins überprüfe
Code
Alles anzeigenisAdmin(playerid,a_level) //Hiermit überprüfen wir das Adminlevel der Spieler! { if(sInfo[playerid][alevel]>=a_level)return 1; return 0; } ocmd:setwarn(playerid,params[])//Warns Verteilen { if(!isAdmin(playerid,2))return SendClientMessage(playerid,Color_Red,"Du bist kein GJ Teammitglied oder dein Admin Level ist zu niedrig"); if(!Adminlevel new warnid,warnanzahl,warngrund[60]; if(sscanf(params,"uds",warnid,warnanzahl,warngrund))return SendClientMessage(playerid, Color_Orange,"INFO: /setwarn[Name/ID][Warn-Anzahl][Warn-Grund]"); if(IsPlayerAdmin(warnid)) return SendClientMessage(playerid, -1, "Du kannst ein Admin nicht verwarnen!"); if(!IsPlayerConnected(warnid))return SendClientMessage(playerid,Color_Red,"FEHLER:Der angegebene Spieler ist nicht online"); if(strlen(warngrund)<=5)return SendClientMessage(playerid,Color_Red,"FEHLER:Warngrund zu kurz[Mindestens 5 Zeichen]"); if(strlen(warngrund)>=60)return SendClientMessage(playerid,Color_Red,"FEHLER:Warngrund zu lang[MAX. 60 Zeichen]");
-
Hallo Ihr Lieben Ich habe ein Kleinen Bug in meinem Adminsystem festgestellt und zwar könnten Leute die Administratoren sind zum beispiel Administratoren+ und höher bis zum Projektleiter Bannen. (nur ein Beispiel also nicht fragen wo der Untersched zwischen Admin und Admin+ wäre)
Ich frage ja so:
CodeisAdmin(playerid,a_level) //Hiermit überprüfen wir das Adminlevel der Spieler! { if(sInfo[playerid][alevel]>=a_level)return 1; return 0; }
ab ob jemand Admin ist
also Inpreziep frage ich so in einem Befehl ab ob er das nötige Level hat
Codeif(!isAdmin(playerid,3))return SendClientMessage(playerid,Color_Red,"Du bis kein GJ Teammitglied oder dein Admin Level ist zu niedrig");
wie kann ich aber beim Ban noch eine Abrfrage dazwischenbauen ob der ARang des Admins kleiner als des des Projektleiters zum Beispiel ist -
Ich finde dieses TUTO nicht schlecht allerdings gibt es hier einen kleinen Bug denn man ausnutzen könnte und zwar könnte der Spieler mit einem niedrigen Adminlevel ein höheren Admin einfach die Anzahl an Warns geben und Ihn damit bannen.
Klar wenn man ein Team hat sollte man darauf vertrauen da so etwas nicht passiert allerdings wird es bestimmt leute geben die dies versuchen.
Daher kurze Frage ob Ihr eine Abfrage kennt die rausfindet ob ein Adminlevel größer oder kleiner als des Spielers ist der diesen Befehl ausführt.
-
Richtig dagegen sag ich ja auch nichts aber wenn man anstatt wie versprochen eine .rar datei eine .iso datei bekommt die genauso heißt wie die .rar datei dann ist das schon etwas merkwürdig .iso sind ja ein virtuelle CD wenn man das so nennen kann dort mit doppelklick draufgeht und anstatt sich die Datei öffnet wo das Script enthalten ist sondern man auf eine Browser geleitet wird der auf seinem Rechner noch nicht mal installiert ist und ander sachen auf dem PC erstellt werden die nie runtergeladen worden dann frage ich mich schon ob das nicht etwas mit der Datei zu tun hat
-
Hallo liebe Community,
gleich vorab ich werde hier weder Namen nennen noch werde ich irgendein Therad anzeigen um denn es sich handelt.
Ich sitze momentan daran ein Server auszuarbeiten habe aber mit Roleplay Server scripten Sehr wenig erfahrung weshalb ich mir diesbezüglich denkanstöße in der Abteilung Gamemodes holen wollte. Alles schön und gut ich schaue mich in dem besagten Therad um und entdecke dort einige Gamemodes die sich sehr interessant anhören.
Um sich dieses Script aber anzuschauen brauch man entweder denn Pastebin oder die .pwn Datei um sich einfach mal anzuschauen wie einige andere das gemacht haben. Alles schön und gut wenn es dann aber solche A...er gibt die ein auf Trojanisches Pferd machen und dir ein Virus mitgeben. Und wenn jetzt viele meinen gut dann vertraue ich darauf umso mehr positive Kommentare es hat umso weniger ist das Risiko das habe ich mir auch gedacht meist hörten die Lobe gar nicht auf und am Ende hatte ich ein Virus der mir mein komplettes Windows zerschossen hat.
Jetzt mal ein Wort an die Leute die meinen das Sie so "cool" sind und es total lustig finden das zu machen Ihr seid nicht cool beim besten Willen nicht Ihr seid einfach die größten A...er auf der Welt und versucht eine Community zu zerstören die Ihr niemals kaputt bekommt.
Jetzt noch mal an die restliche Community die wirklich viel Herz und Kopf hier reinstecken Ihr macht ne super Arbeit aber bitte lasst uns solchen Leuten keine Chance geben.
PS: Sorry die Ausdrücke aber ich habe Sie schon meist zensiert.
MfG
ChrisJewels -
Danke dir Jeffrey die Fehler sind endlich beseitigt worden und es werden nun endlich Fraktions Vehicle erstellt
Wir hatten es mit der Version versucht da der Server mit der R39 SQL Plugin probleme hatte was wir mit geklärt haben
#Close
-
Hallo Ihr Lieben,
ich versuche momentan ein Problem in meinem Script zu lösen was momentan aber nicht einfach ist da ich beim Compailen mehrere Warnings bekomme
versuche ich das Script auf dem Server auszuführen gelingt dies auch beim ersten Mal beim ich kann auch ein FraktionsAuto in erstellen sobald ich ein zweites Auto erstelle restartet der Server
Die Autos werden aber auch nicht in der Datenbank gespeichert.
Ich sende euch hier mal das Script rein sowie die Codes nach dem Compilen und die MySQL Log.
Ich hoffe Ihr könnt mir helfen das ich diese Fehler behebe.
MfG
Chris JewelsC
Alles anzeigen//Includes #include <a_samp> #include <ocmd> #include <sscanf2> #include <a_mysql> //MySQL #define db_host "127.0.0.1" #define db_user "ni1113669_1_DB" #define db_pass "password" #define db_db "ni1113669_1_DB" //farben #define Color_Blue 0x0000FFFF #define Color_Green 0x00FF00FF #define Color_Red 0xFF0000FF #define Color_Orange 0xFFB400FF #define Color_Black 0x0F0000FF #define Color_White 0xFFFFFFFF //Dialoge #define Dialog_Register 50 #define Dialog_Login 51 #define Dialog_Teles 100 #define Dialog_Hilfe 101 #define MAX_FRAC_VEHICLES 10 //enums enum PlayerInfos{ eingeloggt, level, db_id, alevel, fraktion, frang, spawnchange } enum buildingsEnum{ Float:b_x, Float:b_y, Float:b_z, Float:bi_x, Float:bi_y, Float:bi_z, b_interior } enum SpielerAutos{ sa_vID, sa_model, besitzer, Float:sa_x, Float:sa_y, Float:sa_z, Float:sa_r, db_id } enum FrakEnum{ f_name[128], Float:f_x, Float:f_y, Float:f_z, Float:f_r, f_inter, f_world, f_color } enum playerEnum { pFraction }; enum fracVehEnum { e_modelID, Float:e_x, Float:e_y, Float:e_z, Float:e_a, e_color1, e_color2, e_fracID, e_vID }; //Globale Variable new sqlverbindung; new PlayerInfo[MAX_PLAYERS][playerEnum]; new fracVehicle[MAX_FRAC_VEHICLES][fracVehEnum]; new sInfo[MAX_PLAYERS][PlayerInfos]; new cInfo[300][SpielerAutos]; new fInfo[][FrakEnum] = { {"Zivilist", 0.0, 0.0, 0.0, 0.0, 0, 0, Color_White}, {"Polizei", 0.0, 0.0, 0.0, 0.0, 0, 0, Color_White}, {"LKA", 0.0, 0.0, 0.0, 0.0, 0, 0, Color_White}, {"OAmt", 0.0, 0.0, 0.0, 0.0, 0, 0, Color_White}, {"Rettungsdienst", 0.0, 0.0, 0.0, 0.0, 0, 0, Color_White}, {"Bundeswehr", 0.0, 0.0, 0.0, 0.0, 0, 0, Color_White}, {"Regierung", 0.0, 0.0, 0.0, 0.0, 0, 0, Color_White}, {"Reporter", 0.0, 0.0, 0.0, 0.0, 0, 0, Color_White} }; new ShopsInfo[][buildingsEnum]={ {1481.1730,-1771.6017,18.7958,1727.0382,-1637.8347,20.2229,18},//Stadthalle {1369.0007,-1279.6278,13.5469,316.1964,-170.2960,999.5938,6}//AmuuNation Hauptstraße }; //Forwards forward OnUserCheck(playerid); forward OnPasswordResponse(playerid); forward carSavedToDB(carid); forward OnPlayerCarsLoad(playerid); #if defined FILTERSCRIPT public OnFilterScriptInit() { mysql_log(LOG_ERROR | LOG_WARNING); sqlverbindung = mysql_connect("127.0.0.1", "ni1113669_1_DB", "SEgugm83", "ni1113669_1_DB"); LoadFracVehicles(); SetTimer("SaveAllFracVehs", 60000, true); //Timer wird alle 60 Sekunden ausgeführt return 1; } public OnFilterScriptExit() { SaveAllFracVehs(); mysql_close(sqlverbindung); return 1; } #else main() { print("Dieses Script ist erstellt worden von GamerJewels"); } #endif public OnGameModeInit() { SetGameModeText("GJ Script"); AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0); DisableInteriorEnterExits(); EnableStuntBonusForAll(0); ShowPlayerMarkers(0); //Öffentliche Gebäude for(new i=0; i<sizeof(ShopsInfo); i++) { CreatePickup(1239,1,ShopsInfo[i][b_x],ShopsInfo[i][b_y],ShopsInfo[i][b_z]); Create3DTextLabel("Zum Betreten N drücken",Color_Black,ShopsInfo[i][b_x],ShopsInfo[i][b_y],ShopsInfo[i][b_z],10,0,1); } //MySQL sqlverbindung = mysql_connect(db_host,db_user,db_db,db_pass); return 1; } public OnGameModeExit() { mysql_close(sqlverbindung); return 1; } public OnPlayerRequestClass(playerid, classid) { SetPlayerPos(playerid, 1449.5422,-807.5038,84.2773); SetPlayerCameraPos(playerid, 1449.4301,-805.4034,84.2471); SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746); return 1; } public OnUserCheck (playerid) { new num_rows,num_fields; cache_get_data(num_rows,num_fields,sqlverbindung); if(num_rows==0) { //Registrierung ShowPlayerDialog(playerid,Dialog_Register,DIALOG_STYLE_INPUT,"Registrierung","Dein Account wurde nicht in der Datenbank gefunden!\nGib bitte dein gewünschtes Passwort ein:","Okay","Abbrechen"); } else { //Login ShowPlayerDialog(playerid,Dialog_Login,DIALOG_STYLE_PASSWORD,"Login","Dein Account wurde in der Datenbank gefunden!\nBitte gebe dein Passwort nun ein:","Okay","Abbrechen"); } return 1; } public OnPlayerConnect(playerid) { //Login/Register new name[MAX_PLAYER_NAME],query[128]; GetPlayerName(playerid,name,sizeof(name)); format(query,sizeof(query),"SELECT id FROM user WHERE username='%s'",name); mysql_function_query(sqlverbindung,query,true,"OnUserCheck","i",playerid); return 1; //Spielerfarben setzen SetPlayerColor(playerid,Color_White); return 1; } savePlayer(playerid) { if(sInfo[playerid][eingeloggt]==0)return 1; //Speichern level,money new query[256]; format(query,sizeof(query),"UPDATE user SET level='%i',money='%i',alevel='%i',fraktion='%i',frang='%i',spawnchange='%i' WHERE id='%i'",sInfo[playerid][level],GetPlayerMoney(playerid),sInfo[playerid][alevel],sInfo[playerid][fraktion],sInfo[playerid][frang],sInfo[playerid][spawnchange],sInfo[playerid][db_id]); mysql_function_query(sqlverbindung,query,false,"",""); return 1; } resetPlayer(playerid) { for(new i=0; i<sizeof(sInfo[]);i++) { sInfo[playerid][PlayerInfos:i]=0; } return 1; } public OnPlayerDisconnect(playerid, reason) { for(new i=0; i<sizeof(cInfo);i++) { if(cInfo[i][sa_vID]==0)continue; if(cInfo[i][besitzer]!=sInfo[playerid][db_id])continue; GetVehiclePos(cInfo[i][sa_vID],cInfo[i][sa_x],cInfo[i][sa_y],cInfo[i][sa_z]); GetVehicleZAngle(cInfo[i][sa_vID],cInfo[i][sa_r]); new query[128]; format(query,sizeof(query),"UPDATE autos SET x='%f',y='%f',z='%f',r='%f' WHERE id='%i'",cInfo[i][sa_x],cInfo[i][sa_y],cInfo[i][sa_z],cInfo[i][sa_r],cInfo[i][db_id]); mysql_function_query(sqlverbindung,query,false,"",""); DestroyVehicle (cInfo[i][sa_vID]=0); } savePlayer(playerid); resetPlayer(playerid); return 1; } isPlayerInFrak(playerid, f_id){ if(sInfo[playerid][fraktion]==f_id)return 1; return 0; } public OnPlayerSpawn(playerid) { if(!isPlayerInFrak(playerid,0)){ if(sInfo[playerid][spawnchange]==1) { new fID; fID = sInfo[playerid][fraktion]; SetPlayerPos(playerid,fInfo[fID][f_x],fInfo[fID][f_y],fInfo[fID][f_z]); SetPlayerFacingAngle(playerid,fInfo[fID][f_r]); SetPlayerInterior(playerid,fInfo[fID][f_inter]); SetPlayerVirtualWorld(playerid,fInfo[fID][f_world]); SetPlayerColor(playerid,fInfo[fID][f_color]); } } return 1; } public OnPlayerDeath(playerid, killerid, reason) { return 1; } public OnVehicleSpawn(vehicleid) { return 1; } public OnVehicleDeath(vehicleid, killerid) { return 1; } public OnPlayerText(playerid, text[]) { return 1; } public carSavedToDB(carid) { cInfo[carid][db_id]=cache_insert_id(sqlverbindung); return 1; } saveCarToDB(playerid,carid) { new query[123]; format(query,sizeof(query),"Insert Into autos (besitzer,model,x,y,z,r)VALUES ('%i','%i','%f','%f','%f','%f')",sInfo[playerid][db_id],cInfo[carid][sa_model],cInfo[carid][sa_x],cInfo[carid][sa_y],cInfo[carid][sa_z],cInfo[carid][sa_r]); mysql_function_query(sqlverbindung,query,true,"carSavedToDB","i",carid); return 1; } createPlayerCar(playerid,modelid,Float:x,Float:y,Float:z,Float:r) { for(new i=0; i<sizeof(cInfo);i++) { if(cInfo[i][sa_vID]!=0)continue; cInfo[i][besitzer]=sInfo[playerid][db_id]; cInfo[i][sa_x]=x; cInfo[i][sa_y]=y; cInfo[i][sa_z]=z; cInfo[i][sa_r]=r; cInfo[i][sa_model]=modelid; cInfo[i][sa_vID] = CreateVehicle(modelid,x,y,z,r,-1,-1,-1); new pID,string[128]; format(string,sizeof(string),"Das Auto cInfo[%i] wurde erstellt.Und gehört nun dem Spieler)",i); SendClientMessage(pID,Color_Green,string); SendClientMessage(playerid,Color_Green,"Das Auto wurde für dich erstellt"); saveCarToDB(playerid,i); return 1; } return 1; } getPlayerName(playerid) { new name[MAX_PLAYER_NAME]; GetPlayerName(playerid,name,sizeof(name)); return name; } //Adminbefehle isAdmin(playerid,a_level) //Hiermit überprüfen wir das Adminlevel der Spieler! { if(sInfo[playerid][alevel]>=a_level)return 1; return 0; } ocmd:fferstellen(playerid, params[]) { if(!isAdmin(playerid,5))return SendClientMessage(playerid,Color_Red,"Du bist kein GJ Teammitglied oder dein Admin Level ist zu niedrig"); //Zuerst fragen wir ab, ob wir noch Fahrzeuge erstellen können if(GetVehicleModel(MAX_VEHICLES-1) != 0) return SendClientMessage(playerid, 0xFF0000FF, "Es können keine weiteren Fahrzeuge erstellt werden, Limit (MAX_VEHICLES) erreicht."); //Wir deklarieren die benötigten temporären Variablen. new tmp[20], idx, model, fID, color1 = -1, color2 = -1; //Anschließend teilen wir mit strtok die eingegebenen Paramater auf und wandeln sie in eine Zahl um. //Falls etwas falsches eingegeben wurde, geben wir eine entsprechende Meldung zurück. tmp = strtok(params, idx); if(!strlen(tmp) || !IsNumeric(tmp)) return SendClientMessage(playerid, 0xFF0000FF, "Verwendung: /fferstellen [Model] [FraktionsID] [opt:Farbe1] [opt:Farbe2]"); model = strval(tmp); //Eine solche Abfrage kann man auch für nachfolgende FraktionsID (fID) machen, falls gewünscht. if(model < 400 || model > 611) return SendClientMessage(playerid, 0xFF0000FF, "Error: Model ID existiert nicht."); tmp = strtok(params, idx); if(!strlen(tmp) || !IsNumeric(tmp)) return SendClientMessage(playerid, 0xFF0000FF, "Verwendung: /fferstellen [Model] [FraktionsID] [opt:Farbe1] [opt:Farbe2]"); fID = strval(tmp); tmp = strtok(params, idx); if(strlen(tmp) && IsNumeric(tmp)) color1 = strval(tmp); tmp = strtok(params, idx); if(strlen(tmp) && IsNumeric(tmp)) color2 = strval(tmp); //Sind alle Parameter korrekt übergeben worden, dann suchen wir uns einen freien Index in den wir das Fraktions-Fahrzeug speichern können. for(new i=0; i<MAX_FRAC_VEHICLES; i++) { //Frei: if(fracVehicle[i][e_vID] == 0) { //Daten werden übergeben new Float:x, Float:y, Float:z, Float:a; GetPlayerPos(playerid, x, y, z); GetPlayerFacingAngle(playerid, a); fracVehicle[i][e_modelID] = model; fracVehicle[i][e_x] = x; fracVehicle[i][e_y] = y; fracVehicle[i][e_z] = z; fracVehicle[i][e_a] = a; fracVehicle[i][e_color1] = color1; fracVehicle[i][e_color2] = color2; fracVehicle[i][e_fracID] = fID; //und anschließend in die Datenbank geschrieben. new query[256]; format(query, sizeof(query), "INSERT INTO FracVehicles (ID, ModelID, x, y, z, a, Color1, Color2, FracID) VALUES ('%d', '%d', '%f', '%f', '%f', '%f', '%d', '%d', '%d')", i, fracVehicle[i][e_modelID], fracVehicle[i][e_x], fracVehicle[i][e_y], fracVehicle[i][e_z], fracVehicle[i][e_a], fracVehicle[i][e_color1], fracVehicle[i][e_color2], fracVehicle[i][e_fracID]); mysql_tquery(sqlverbindung,query); //Zuletzt wird dann noch das Fahrzeug erstellt und der Spieler in das Fahrzeug gesetzt. fracVehicle[i][e_vID] = CreateVehicle(fracVehicle[i][e_modelID], fracVehicle[i][e_x], fracVehicle[i][e_y], fracVehicle[i][e_z], fracVehicle[i][e_a], fracVehicle[i][e_color1], fracVehicle[i][e_color2], -1); PutPlayerInVehicle(playerid, fracVehicle[i][e_vID], 0); return SendClientMessage(playerid, 0x00FF00FF, "Fahrzeug gespeichert."); } } return SendClientMessage(playerid, 0xFF0000FF, "Error: Limit für Fraktions-Fahrzeuge erreicht."); } ocmd:ffloeschen(playerid, params[]) { //Wir deklarieren die benötigte temporäre Variable. new vid; if(!isAdmin(playerid,5))return SendClientMessage(playerid,Color_Red,"Du bist kein GJ Teammitglied oder dein Admin Level ist zu niedrig"); //Wenn der Spieler keine Vehicle-ID eingibt wird die gelöscht, in der sich der Spieler befindet, //ansonsten die eingegebene ID. if(!IsNumeric(params) || !strlen(params)) return SendClientMessage(playerid, 0xFF0000FF, "Error: Nutze: /ffloeschen [Vehicle ID]"); vid = strval(params); if(vid <= 0) return SendClientMessage(playerid, 0xFF0000FF, "Error: Vehicle-ID ist kein Fraktions-Fahrzeug."); for(new i=0; i<MAX_FRAC_VEHICLES; i++) { //Eingegebene ID und die des Fraktions-Fahrzeugs stimmen überein. if(fracVehicle[i][e_vID] == vid) { //Daten werden entfernt fracVehicle[i][e_modelID] = 0; fracVehicle[i][e_x] = 0.0; fracVehicle[i][e_y] = 0.0; fracVehicle[i][e_z] = 0.0; fracVehicle[i][e_a] = 0.0; fracVehicle[i][e_color1] = 0; fracVehicle[i][e_color2] = 0; fracVehicle[i][e_fracID] = -1; //und anschließend in der Datenbank gelöscht. new query[128]; format(query, sizeof(query), "DELETE FROM FracVehicles WHERE ID = '%d'", i); mysql_tquery(sqlverbindung, query); DestroyVehicle(fracVehicle[i][e_vID]); fracVehicle[i][e_vID] = 0; return SendClientMessage(playerid, 0x00FF00FF, "Fahrzeug gelöscht."); } } return SendClientMessage(playerid, 0xFF0000FF, "Error: Vehicle-ID ist kein Fraktions-Fahrzeug."); } ocmd:parken(playerid) { if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, 0xFF0000FF, "Du bist in keinem Fahrzeug."); new vehicleid = GetPlayerVehicleID(playerid); if(SaveFracVehCheck(vehicleid)) return SendClientMessage(playerid, 0x00FF00FF, "Fahrzeug geparkt."); else return SendClientMessage(playerid, 0xFF0000FF, "Dieses Fahrzeug kann nicht geparkt werden."); } ocmd:makeleader(playerid,params[]) { if(!isAdmin(playerid,5))return SendClientMessage(playerid,Color_Red,"Du bist kein GJ Teammitglied oder dein Admin Level ist zu niedrig"); new pID, fID; if(sscanf(params,"ui",pID,fID))return SendClientMessage(playerid,Color_Red,"INFO:/makeleader [playerid][fraktionsid]"); if(fID >= sizeof(fInfo))return SendClientMessage(playerid,Color_Red,"FEHLER:Fraktion existiert nicht."); sInfo[pID][fraktion] = fID; sInfo[pID][alevel] = 6; new string[128]; format(string,sizeof(string),"%s hat dich zum Leader der Fraktion %s gemacht",getPlayerName(playerid),fInfo[fID][f_name]); SendClientMessage(pID,Color_Green,string); SendClientMessage(playerid,Color_Green,"Du hast ein Spieler zum Leader einer Fraktion gemacht!"); return 1; } ocmd:setadmin(playerid,params[]) { if(!isAdmin(playerid,6))return SendClientMessage(playerid,Color_Red,"Du bist kein GJ Teammitglied oder dein Admin Level ist zu niedrig"); new pID,a_level; if(sscanf(params,"ui",pID,a_level))return SendClientMessage(playerid,Color_Red,"INFO: /setadmin [playerid] [adminlevel]"); sInfo[pID][alevel]=a_level; savePlayer (pID); SendClientMessage(pID,Color_Orange,"Dein Adminrang wurde von Spieler... geändert"); SendClientMessage(playerid,Color_Orange,"Du hast den Adminrang von Spieler... geändert"); return 1; } ocmd:pvehicle (playerid, params[]) { if(!isAdmin(playerid,2))return SendClientMessage(playerid,Color_Red,"Du bist kein GJ Teammitglied oder dein Admin Level ist zu niedrig"); new mID,pID; if(sscanf(params,"ui",pID,mID))return SendClientMessage(playerid,Color_Red,"Info: /playercar [playerid][Wähle eine ID zwischen 400-611]"); if(mID<400||mID>611)return SendClientMessage(playerid,Color_Red,"Info: /playercar [playerid] [Wähle eine ID zwischen 400-611]"); new Float:x,Float:y,Float:z,Float:r; GetPlayerPos(pID,x,y,z); GetPlayerFacingAngle(pID,r); createPlayerCar(pID,mID,x,y,z,r); return 1; } ocmd:vehicle (playerid, params[]) { if(!isAdmin(playerid,2))return SendClientMessage(playerid,Color_Red,"Du bist kein GJ Teammitglied oder dein Admin Level ist zu niedrig"); new mID; if(sscanf(params,"i",mID))return SendClientMessage(playerid,Color_Red,"Info: /vehicle [Wähle eine ID zwischen 400-611]"); if(mID<400||mID>611)return SendClientMessage(playerid,Color_Red,"Info: /vehicle [Wähle eine ID zwischen 400-611]"); new Float:x,Float:y,Float:z,Float:r; GetPlayerPos(playerid,x,y,z); GetPlayerFacingAngle(playerid,r); CreateVehicle(mID,x,y,z,r,-1,-1,-1); return 1; } ocmd:deletecar(playerid,params[]) { if(!isAdmin(playerid,2))return SendClientMessage(playerid,Color_Red,"Du bist kein GJ Teammitglied oder dein Admin Level ist zu niedrig"); if(IsPlayerInAnyVehicle(playerid))return SendClientMessage(playerid,Color_Red,"INFO: Du bist in keinem Fahrzeug"); DestroyVehicle(GetPlayerVehicleID(playerid)); return 1; } /* ocmd:deletecar(playerid,params[]) { if(!isAdmin(playerid,2))return SendClientMessage(playerid,Color_Red,"Du bist kein GJ Teammitglied oder dein Admin Level ist zu niedrig"); if(IsPlayerInAnyVehicle(playerid))return SendClientMessage(playerid,Color_Red,"INFO: Du bist in keinem Fahrzeug"); DestroyVehicle(GetPlayerVehicleID(playerid)); return 1; } */ ocmd:restart(playerid,params[]) { if(!isAdmin(playerid,3))return SendClientMessage(playerid,Color_Red,"Du bis kein GJ Teammitglied oder dein Admin Level ist zu niedrig"); SendRconCommand("gmx"); return 1; } //Spielerbefehle ocmd:spawnchange(playerid,params[]) { if(isPlayerInFrak(playerid,0))return SendClientMessage(playerid,Color_Red,"FEHLER:Du bist in keiner Fraktion!"); if(sInfo[playerid][spawnchange]==0) { sInfo[playerid][spawnchange]=1; } if(sInfo[playerid][spawnchange]==1) { sInfo[playerid][spawnchange]=0; } SendClientMessage(playerid,Color_Green,"Dein Spawn wurde erfolgreich geändert"); return 1; } ocmd:enter(playerid,params[]) { for (new i=0; i<sizeof(ShopsInfo);i++) { if(!IsPlayerInRangeOfPoint(playerid,2,ShopsInfo[i][b_x],ShopsInfo[i][b_y],ShopsInfo[i][b_z]))continue; SetPlayerPos(playerid,ShopsInfo[i][bi_x],ShopsInfo[i][bi_y],ShopsInfo[i][bi_z]); SetPlayerInterior(playerid,ShopsInfo[i][b_interior]); SetPlayerVirtualWorld(playerid,i); return 1; } return 1; } ocmd:exit(playerid,params[]) { for (new i=0; i<sizeof(ShopsInfo);i++) { if(GetPlayerVirtualWorld(playerid)!=i)continue; if(!IsPlayerInRangeOfPoint(playerid,2,ShopsInfo[i][bi_x],ShopsInfo[i][bi_y],ShopsInfo[i][bi_z]))continue; SetPlayerPos(playerid,ShopsInfo[i][b_x],ShopsInfo[i][b_y],ShopsInfo[i][b_z]); SetPlayerInterior(playerid,0); SetPlayerVirtualWorld(playerid,0); return 1; } return 1; } //Dialogbefehle ocmd:teles(playerid, params[]) { ShowPlayerDialog(playerid,Dialog_Teles,DIALOG_STYLE_LIST,"Teleportpunkte","Spawn\nStadthalle\nHauptAmmunation","Ausführen","Abbrechen"); return 1; } ocmd:help (playerid, params[]) { ShowPlayerDialog(playerid,Dialog_Hilfe,DIALOG_STYLE_MSGBOX,"Hilfe","Das ist eine Hilfe\nHilfe","Schließen",""); return 1; } ocmd:pn(playerid,params[]) { new pID,text[128]; if(sscanf(params,"us[128]",pID,text))return SendClientMessage(playerid,Color_Red,"Info: /pn [Spielername oder ID] [text]"); SendClientMessage (pID,Color_Green,text); return 1; } public OnPlayerCommandText(playerid, cmdtext[]) { return 0; } public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger) { //Eine Schleife durch alle Fraktions-Fahrzeuge for(new i=0; i<MAX_FRAC_VEHICLES; i++) { //Wenn die vehicleid die gleiche ist, wie die des Fraktions-Fahrzeugs if(fracVehicle[i][e_vID] == vehicleid) { //Jetzt brauchen wir die Variable, mit der Dein vorher bereits existierendes Fraktions-System arbeitet. //Ich nehme jetzt einfach eine Beispiel-Variable, diese musst Du selbst mit der ersetzen, //die Dein System verwendet. //Es geht um diese Variable: PlayerInfo[playerid][pFraction] if(PlayerInfo[playerid][pFraction] != fracVehicle[i][e_fracID]) { //Wenn der Spieler nicht in der Fraktion ist, die das Fahrzeug verwenden darf, //dann darf er es nicht betreten. TogglePlayerControllable(playerid, false); TogglePlayerControllable(playerid, true); SendClientMessage(playerid, 0xFF0000FF, "Du bist nicht in der Fraktion, die dieses Fahrzeug verwenden darf."); } break; //Es gibt ja keine zwei gleichen Fahrzeuge } } return 1; } CreateFVTable() { new query[512]; format(query, sizeof(query), "CREATE TABLE IF NOT EXISTS `FracVehicles` ("); format(query, sizeof(query), "%s`ID` int(11) NOT NULL PRIMARY KEY,", query); format(query, sizeof(query), "%s `ModelID` int(11) NOT NULL DEFAULT '0',", query); format(query, sizeof(query), "%s `x` float NOT NULL DEFAULT '0',", query); format(query, sizeof(query), "%s `y` float NOT NULL DEFAULT '0',", query); format(query, sizeof(query), "%s `z` float NOT NULL DEFAULT '0',", query); format(query, sizeof(query), "%s `r` float NOT NULL DEFAULT '0',", query); format(query, sizeof(query), "%s `Color1` int(11) NOT NULL DEFAULT '0',", query); format(query, sizeof(query), "%s `Color2` int(11) NOT NULL DEFAULT '0',", query); format(query, sizeof(query), "%s `FracID` int(11) NOT NULL DEFAULT '-1'", query); format(query, sizeof(query), "%s) ENGINE=InnoDB DEFAULT CHARSET=latin1;", query); //handle = die Connection Handle ID die vor mysql_connect steht. mysql_tquery(sqlverbindung, query); return 1; } LoadFracVehicles() { CreateFVTable(); //handle = die Connection Handle ID die vor mysql_connect steht. //Es wird ein SELECT Query an die Datenbank gesendet, diese gibt über das Callback LoadFracVehicles_Data //die Daten im Cache zurück. mysql_tquery(sqlverbindung, "SELECT * FROM FracVehicles ORDER BY ID ASC", "LoadFracVehicles_Data"); return 1; } forward LoadFracVehicles_Data(); public LoadFracVehicles_Data() { //Deklaration neuer temporärer Variablen: new rows, id, createdVehs; //Anzahl der gelesenen Datensätze abfragen: rows = cache_num_rows(); //Schleife durch alle Datensätze: for(new i=0; i<rows; i++) { //Fahrzeug existiert in der Datenbank, wir laden die Daten jetzt aus dem Cache. id = cache_get_field_content_int(i, "ID"); //Um Fehler bei der Verarbeitung zu vermeiden: if(id < 0 || id >= MAX_FRAC_VEHICLES) continue; //Danach die restlichen Daten laden. Unser Index (der Wert mit dem wir auf das //Fahrzeug in der Datenbank zugreifen) ist die "ID". fracVehicle[id][e_modelID] = cache_get_field_content_int(i, "ModelID"); fracVehicle[id][e_x] = cache_get_field_content_float(i, "x"); fracVehicle[id][e_y] = cache_get_field_content_float(i, "y"); fracVehicle[id][e_z] = cache_get_field_content_float(i, "z"); fracVehicle[id][e_a] = cache_get_field_content_float(i, "r"); fracVehicle[id][e_color1] = cache_get_field_content_int(i, "Color1"); fracVehicle[id][e_color2] = cache_get_field_content_int(i, "Color2"); fracVehicle[id][e_fracID] = cache_get_field_content_int(i, "FracID"); //Zur Sicherheit fragen wir hier nun ab, ob das angegebene Modell auch existiert, //sollte das nicht der Fall sein, dann wird das Fahrzeug nicht erstellt. if(fracVehicle[id][e_modelID] >= 400 && fracVehicle[id][e_modelID] <= 611) { //Nachdem das Fahrzeug geladen wurde, wird es erstellt. fracVehicle[id][e_vID] = CreateVehicle(fracVehicle[id][e_modelID], fracVehicle[id][e_x], fracVehicle[id][e_y], fracVehicle[id][e_z], fracVehicle[id][e_a], fracVehicle[id][e_color1], fracVehicle[id][e_color2], -1); } else { //Falls eine nicht existierende Model-ID angegeben wurde, geben wir eine Information aus. printf("[Error] Model-ID %d existiert nicht (ID: %d).", fracVehicle[id][e_modelID], id); } //Zur Sicherheit fragen wir noch ab, ob das Fahrzeug-Limit noch nicht überschritten wurde. //Existiert ein Fahrzeug mit der höchsten ID, dann kann kein weiteres mehr erstellt werden. if(GetVehicleModel(MAX_VEHICLES-1) != 0) return print("Es können keine weiteren Fahrzeuge geladen werden, Limit (MAX_VEHICLES) erreicht."); //Zur weiteren Sicherheit prüfen wir noch, ob die maximale Anzahl an Fraktions-Fahrzeugen erreicht ist. createdVehs++; if(createdVehs == MAX_FRAC_VEHICLES) return print("Es können keine weiteren Fahrzeuge geladen werden, Limit (MAX_FRAC_VEHICLES) erreicht."); } return 1; } forward SaveAllFracVehs(); public SaveAllFracVehs() { //Deklaration neuer temporärer Variablen: new query[256]; //Schleife durch alle Fraktions-Fahrzeuge for(new i=0; i<MAX_FRAC_VEHICLES; i++) { //Wenn das Fahrzeug existiert if(fracVehicle[i][e_modelID] >= 400 && fracVehicle[i][e_modelID] <= 611) { //Wir fragen die Position des Fahrzeugs ab: GetVehiclePos(fracVehicle[i][e_vID], fracVehicle[i][e_x], fracVehicle[i][e_y], fracVehicle[i][e_z]); GetVehicleZAngle(fracVehicle[i][e_vID], fracVehicle[i][e_a]); //Und wir erstellen das Query: format(query, sizeof(query), "UPDATE FracVehicles SET ModelID = '%d', x = '%f', y = '%f', z = '%f', r = '%f', Color1 = '%d', Color2 = '%d', FracID = '%d' WHERE ID = '%d'", fracVehicle[i][e_modelID], fracVehicle[i][e_x], fracVehicle[i][e_y], fracVehicle[i][e_z], fracVehicle[i][e_a], fracVehicle[i][e_color1], fracVehicle[i][e_color2], fracVehicle[i][e_fracID], i); //handle = die Connection Handle ID die vor mysql_connect steht. mysql_tquery(sqlverbindung, query); } } return 1; } stock SaveFracVehCheck(vehicleid) { //Deklaration neuer temporärer Variablen: new query[256]; //Schleife durch alle Fraktions-Fahrzeuge for(new i=0; i<MAX_FRAC_VEHICLES; i++) { //Wenn die vehicleid die gleiche ist, wie die des Fraktions-Fahrzeugs if(fracVehicle[i][e_vID] == vehicleid) { //Wir fragen die Position des Fahrzeugs ab: GetVehiclePos(fracVehicle[i][e_vID], fracVehicle[i][e_x], fracVehicle[i][e_y], fracVehicle[i][e_z]); GetVehicleZAngle(fracVehicle[i][e_vID], fracVehicle[i][e_a]); //Und wir erstellen das Query: format(query, sizeof(query), "UPDATE FracVehicles SET ModelID = '%d', x = '%f', y = '%f', z = '%f', r = '%f', Color1 = '%d', Color2 = '%d', FracID = '%d' WHERE ID = '%d'", fracVehicle[i][e_modelID], fracVehicle[i][e_x], fracVehicle[i][e_y], fracVehicle[i][e_z], fracVehicle[i][e_a], fracVehicle[i][e_color1], fracVehicle[i][e_color2], fracVehicle[i][e_fracID], i); //handle = die Connection Handle ID die vor mysql_connect steht. mysql_tquery(sqlverbindung, query); return 1; //Es gibt ja keine zwei gleichen Fahrzeuge } } return 0; //Fahrzeug ist kein Fraktions-Fahrzeug } stock strtok(const string[], &index) //©Jeffry { new result[20], length = strlen(string), i = index; while ((i < length) && (string[i] == ' ')) i++; strmid(result,string,i,((index = strfind(string, " ", false, i)) == -1) ? (index = length) : (index) , 20); index++; return result; } stock IsNumeric(string[]) { for (new i = 0, j = strlen(string); i < j; i++) { if ((string[i] > '9' || string[i] < '0')) return 0; } return 1; } public OnPlayerExitVehicle(playerid, vehicleid) { SaveFracVehCheck(vehicleid); return 1; } public OnPlayerStateChange(playerid, newstate, oldstate) { return 1; } public OnPlayerEnterCheckpoint(playerid) { return 1; } public OnPlayerLeaveCheckpoint(playerid) { return 1; } public OnPlayerEnterRaceCheckpoint(playerid) { return 1; } public OnPlayerLeaveRaceCheckpoint(playerid) { return 1; } public OnRconCommand(cmd[]) { return 1; } public OnPlayerRequestSpawn(playerid) { return 1; } public OnObjectMoved(objectid) { return 1; } public OnPlayerObjectMoved(playerid, objectid) { return 1; } public OnPlayerPickUpPickup(playerid, pickupid) { return 1; } public OnVehicleMod(playerid, vehicleid, componentid) { return 1; } public OnVehiclePaintjob(playerid, vehicleid, paintjobid) { return 1; } public OnVehicleRespray(playerid, vehicleid, color1, color2) { return 1; } public OnPlayerSelectedMenuRow(playerid, row) { return 1; } public OnPlayerExitedMenu(playerid) { return 1; } public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid) { return 1; } public OnPlayerKeyStateChange(playerid, newkeys, oldkeys) { if(newkeys & KEY_NO) { //enterbefehl ocmd_enter(playerid,""); return 1; } if(newkeys & KEY_NO) { //exitbefehl ocmd_exit(playerid,""); return 1; } return 1; } public OnRconLoginAttempt(ip[], password[], success) { return 1; } public OnPlayerUpdate(playerid) { return 1; } public OnPlayerStreamIn(playerid, forplayerid) { return 1; } public OnPlayerStreamOut(playerid, forplayerid) { return 1; } public OnVehicleStreamIn(vehicleid, forplayerid) { return 1; } public OnVehicleStreamOut(vehicleid, forplayerid) { return 1; } SetPlayerMoney(playerid,money) { ResetPlayerMoney(playerid); GivePlayerMoney(playerid,money); return 1; } getFreeCarID() { for(new i=0;i<sizeof(cInfo);i++) { if(cInfo[i][sa_vID]==0)return i; } return 0; } public OnPlayerCarsLoad(playerid) { new num_fields,num_rows; cache_get_data(num_rows,num_fields,sqlverbindung); if(!num_rows)return 1; for(new i=0; i<num_rows; i++) { new id=getFreeCarID(); cInfo[id][sa_model]=cache_get_field_content_int(i,"model",sqlverbindung); cInfo[id][besitzer]=cache_get_field_content_int(i,"besitzer",sqlverbindung); cInfo[id][sa_x]=cache_get_field_content_float(i,"x",sqlverbindung); cInfo[id][sa_y]=cache_get_field_content_float(i,"y",sqlverbindung); cInfo[id][sa_z]=cache_get_field_content_float(i,"z",sqlverbindung); cInfo[id][sa_r]=cache_get_field_content_float(i,"r",sqlverbindung); cInfo[id][db_id]=cache_get_field_content_int(i,"id",sqlverbindung); CreateVehicle(cInfo[id][sa_model],cInfo[id][sa_x],cInfo[id][sa_y],cInfo[id][sa_z],cInfo[id][sa_r],-1,-1,-1); } return 1; } loadPlayerCars(playerid) { new query[128]; format(query,sizeof(query),"SELECT * FROM autos WHERE besitzer='%i'",sInfo[playerid][db_id]); mysql_function_query(sqlverbindung,query,true,"OnPlayerCarsLoad","i",playerid); return 1; } public OnPasswordResponse(playerid) { new num_fields,num_rows; cache_get_data(num_rows,num_fields,sqlverbindung); if(num_rows==1) { //Passwort richtig; Spieler suchen sInfo[playerid][eingeloggt]=1; sInfo[playerid][level] = cache_get_field_content_int(0,"level",sqlverbindung); SetPlayerScore(playerid,sInfo[playerid][level]); sInfo[playerid][db_id] = cache_get_field_content_int(0,"id",sqlverbindung); SetPlayerMoney(playerid,cache_get_field_content_int(0,"money",sqlverbindung)); sInfo[playerid][alevel] = cache_get_field_content_int(0,"alevel",sqlverbindung); sInfo[playerid][fraktion] = cache_get_field_content_int(0,"fraktion",sqlverbindung); sInfo[playerid][frang] = cache_get_field_content_int(0,"frang",sqlverbindung); sInfo[playerid][spawnchange] = cache_get_field_content_int(0,"spawnchange",sqlverbindung); loadPlayerCars(playerid); } else { //Passwort falsch SendClientMessage(playerid,Color_Red,"Das eingegebene Passwort ist falsch oder fehlerhaft eingegeben worden"); ShowPlayerDialog(playerid,Dialog_Login,DIALOG_STYLE_PASSWORD,"Login","Dein Account wurde in der Datenbank gefunden!\nBitte gebe dein Passwort nun ein:","Okay","Abbrechen"); } return 1; } public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) { if (dialogid==Dialog_Login) { if(response) { new name[MAX_PLAYER_NAME],query[128],passwort[35]; GetPlayerName(playerid,name,sizeof(name)); if(strlen(inputtext)>0) { mysql_escape_string(inputtext,passwort,sqlverbindung); format(query,sizeof(query),"SELECT * FROM user WHERE username='%s' AND password=MD5('%s')",name,passwort); mysql_function_query(sqlverbindung,query,true,"OnPasswordResponse","i",playerid); } else { //Kein Passwort SendClientMessage(playerid,Color_Red,"Server:Bitte gib dein Passwort ein"); ShowPlayerDialog(playerid,Dialog_Login,DIALOG_STYLE_PASSWORD,"Login","Dein account wurde in der Datenbank gefunden!\nBitte gebe dein Passwort nun ein:","Okay","Abbrechen"); } } else { Kick(playerid); } return 1; } if (dialogid==Dialog_Register) { if(response) { new name[MAX_PLAYER_NAME],query[128],passwort[35]; GetPlayerName(playerid,name,sizeof(name)); if(strlen(inputtext)>3) { //Regestrierungsfunktion mysql_escape_string(inputtext,passwort,sqlverbindung); format(query,sizeof(query),"INSERT INTO user (username,password) VALUES ('%s',MD5('%s'))",name,passwort); mysql_function_query(sqlverbindung,query,false,"",""); } else { //Kleiner als 4 Zeichen SendClientMessage (playerid,Color_Red,"Server:Dein Zeichen muss mindestens 4 Zeichen lang sein"); ShowPlayerDialog(playerid,Dialog_Register,DIALOG_STYLE_INPUT,"Registrierung","Gib bitte dein gewünschtes Passwort ein;","Okay","Abbrechen"); } } else { SendClientMessage(playerid,Color_Red,"Registrierungvorgang abgebrochen"); Kick(playerid); } return 1; } if (dialogid==Dialog_Teles) { if(response) { if (listitem==0) { //Spawn SetPlayerPos(playerid,1958.3783, 1343.1572, 15.3746); SetPlayerVirtualWorld(playerid,0); SetPlayerInterior(playerid,0); } if (listitem==1) { //Stadthalle SetPlayerPos(playerid,1480.1730,-1771.6017,18.7958); SetPlayerVirtualWorld(playerid,0); SetPlayerInterior(playerid,0); } if (listitem==2) { //HauptAmmuNation SetPlayerPos(playerid,1363.5820,-1280.3978,13.5469); SetPlayerVirtualWorld(playerid,0); SetPlayerInterior(playerid,0); } } else { SendClientMessage(playerid,Color_Red,"Vorgang abgebrochen"); } return 1; } return 1; } public OnPlayerClickPlayer(playerid, clickedplayerid, source) { return 1; }
C:\Users\Chris\Desktop\samp server\gamemodes\script.pwn(207) : warning 225: unreachable code
C:\Users\Chris\Desktop\samp server\gamemodes\script.pwn(386) : warning 202: number of arguments does not match definition
C:\Users\Chris\Desktop\samp server\gamemodes\script.pwn(386) : warning 202: number of arguments does not match definition
C:\Users\Chris\Desktop\samp server\gamemodes\script.pwn(427) : warning 202: number of arguments does not match definition
C:\Users\Chris\Desktop\samp server\gamemodes\script.pwn(427) : warning 202: number of arguments does not match definition
C:\Users\Chris\Desktop\samp server\gamemodes\script.pwn(722) : warning 202: number of arguments does not match definition
C:\Users\Chris\Desktop\samp server\gamemodes\script.pwn(722) : warning 202: number of arguments does not match definition
C:\Users\Chris\Desktop\samp server\gamemodes\script.pwn(747) : warning 202: number of arguments does not match definition
C:\Users\Chris\Desktop\samp server\gamemodes\script.pwn(747) : warning 202: number of arguments does not match definition
C:\Users\Chris\Desktop\samp server\gamemodes\script.pwn(1070) : warning 203: symbol is never used: "CreateFVTable"
C:\Users\Chris\Desktop\samp server\gamemodes\script.pwn(1070) : warning 203: symbol is never used: "LoadFracVehicles"
Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase11 Warnings.
[18:13:39] [ERROR] CMySQLQuery::Execute[P()] - (error #1054) Unknown column 'a' in 'field list'
[18:16:39] [ERROR] mysql_tquery - callback parameter count does not match format specifier length
[18:17:28] [ERROR] CMySQLQuery::Execute[P()] - (error #1054) Unknown column 'a' in 'field list'
[18:17:59] [ERROR] mysql_tquery - callback parameter count does not match format specifier length
[18:18:04] [ERROR] CMySQLQuery::Execute[P()] - (error #1054) Unknown column 'a' in 'field list'
[18:18:06] [ERROR] mysql_tquery - callback parameter count does not match format specifier length