Schick uns am besten mal die Zeilen:
360 - 380
Dann kann man dir mehr helfen
(371)bfxobject[j][obj_var] = '�';
(372)if(!ERSTELLT[j])continue;
bfxobject[j][obj_var] = '?';
if(!ERSTELLT[j])
continue;
Das sollte dir etwas helfen!?
Schick uns am besten mal die Zeilen:
360 - 380
Dann kann man dir mehr helfen
(371)bfxobject[j][obj_var] = '�';
(372)if(!ERSTELLT[j])continue;
bfxobject[j][obj_var] = '?';
if(!ERSTELLT[j])
continue;
Das sollte dir etwas helfen!?
Also das erste würde ich so machen:
if(pickupid == fdduty)
{
if(Spieler[playerid][pDuty] == 0 && Spieler[playerid][pFD] > 0) //Zeile 1806
{
format(string, sizeof(string), "%s beginnt den Dienst als Feuerwehrmann beim SA-FD", ThePlayer);
SendClientMessageToAll(COLOR_YELLOW, string);
SetPlayerColor(playerid, COLOR_WHITE);
SetPlayerSkin(playerid, 277);
Spieler[playerid][pDuty] = 4;
}
else if(Spieler[playerid][pDuty] == 4 && Spieler[playerid][pFD] > 0) //Zeile 1814
{
format(string, sizeof(string), "%s beendet den Dienst als Feuerwehrmann beim SA-FD", ThePlayer);
SendClientMessageToAll(COLOR_YELLOW, string);
SetPlayerColor(playerid, COLOR_GREY);
SetPlayerSkin(playerid, Spieler[playerid][pSkin]);
Spieler[playerid][pDuty] = 0;
}
return 1;
}
Dann das zweite:
public Stats(playerid, statsplayerid, color)
{
if(IsPlayerConnected(statsplayerid))
{
new TheOtherPlayer[MAX_PLAYER_NAME],
string[128];
GetPlayerName(statsplayerid, TheOtherPlayer, sizeof(TheOtherPlayer));
format(string, sizeof(string), "Stats von %s:", TheOtherPlayer);
SendClientMessage(playerid, color, string);
format(string, sizeof(string), "Geld: %d | AdmLevel: %d | SkinID: %d ", Spieler[statsplayerid][pMoney], Spieler[statsplayerid][pAdmin], Spieler[statsplayerid][pSkin]);
SendClientMessage(playerid, color, string);
SendClientMessage(playerid, COLOR_INFO, "Weitere Infos/Jobs:");
if(Spieler[statsplayerid][pAdmin] == 1)
SendClientMessage(playerid, COLOR_INFO, "Moderator");
if(Spieler[statsplayerid][pAdmin] == 2)
SendClientMessage(playerid, COLOR_INFO, "Supporter");
if(Spieler[statsplayerid][pAdmin] == 3)
SendClientMessage(playerid, COLOR_INFO, "Administrator");
if(Spieler[statsplayerid][pAdmin] == 4)
SendClientMessage(playerid, COLOR_INFO, "Projektleiter");
if(Spieler[statsplayerid][pCop] == 1)
SendClientMessage(playerid, COLOR_INFO, "Azubi bei der Polizei");
if(Spieler[statsplayerid][pCop] == 2)
SendClientMessage(playerid, COLOR_INFO, "Officer");
if(Spieler[statsplayerid][pCop] == 3)
SendClientMessage(playerid, COLOR_INFO, "Polizeichef");
if(Spieler[statsplayerid][pCop] == 4)
SendClientMessage(playerid, COLOR_INFO, "Polizeipräsident");
if(Spieler[statsplayerid][pTaxi] == 1)
SendClientMessage(playerid, COLOR_INFO, "Azubi beim Taxi-Depot SA");
if(Spieler[statsplayerid][pTaxi] == 2)
SendClientMessage(playerid, COLOR_INFO, "Taxifahrer");
if(Spieler[statsplayerid][pTaxi] == 3)
SendClientMessage(playerid, COLOR_INFO, "Chef beim Taxi-Depot SA");
if(Spieler[statsplayerid][pSani] == 1)
SendClientMessage(playerid, COLOR_INFO, "Azubi beim Krankenhaus");
if(Spieler[statsplayerid][pSani] == 2)
SendClientMessage(playerid, COLOR_INFO, "Sanitäter");
if(Spieler[statsplayerid][pSani] == 3)
SendClientMessage(playerid, COLOR_INFO, "Oberarzt");
if(Spieler[statsplayerid][pFD] == 1)
SendClientMessage(playerid, COLOR_INFO, "Azubi beim FD-SA");
if(Spieler[statsplayerid][pFD] == 2)
SendClientMessage(playerid, COLOR_INFO, "Feuerwehrmann");
if(Spieler[statsplayerid][pFD] == 3)
SendClientMessage(playerid, COLOR_INFO, "Chef beim FD-SA");
}
else
SendClientMessage(playerid, COLOR_RED, "Kein Spieler mit angegebener ID verbunden.");
return 1;
}
Bitte immer die Fehler Logs mit schicken
Es zieht nur 10% vom Preis ab und es gibt das Geld back.
Ich kann dir aus der Ferne nur sagen, dass es vielleicht ein Anti Cheat System gibt, welches die Transaktion nicht akzeptiert.
Oder eben eine falsche Rechnung.
Oder wie üblich: Falsche Funktion
Es speichert die Position nicht. Nach restart ist das Car weg.
Ich denke mir mal aus der Ferne:
Die Positionen werden nur im Cache gespeichert.
Nach einem Restart ist dieser Cache leer.
Du müsstest die Positionen richtig speichern.
Oder beim Laden/Beenden des Gamemodes die Positionen in Dateien speichern lassen.
TeamViewer ist eine super Application
Ich würde dir gerne weiterhelfen.
Hätte eine Frage an dich, wie sind die Passwörter in WBB verschlüsselt?
wird da ein md5 hash angewendet, und dann nochmal ein md5 hash drüber?
Hast du Ahnung vom WBB?
Man könnte denken du stellst mir hier Test Fragen
Ich erkläre dir das mal:
In der Datei "forum/wcf/lib/data/user/User.class.php" finden wir die Funktion, die uns einen Hinweis gibt.
Diese heißt "checkPassword()".
Im Endeffekt kommt es also auf die Einstellungen deines Forums drauf an.
Man gucke sich die Abfrage an, "StringUtil::getDoubleSaltedHash($password, $this->salt)".
Übersetzt wäre das hier "forum/wcf/lib/util/StringUtil.class.php" zu finden.
Diese beiden Dateien klären uns im Endeffekt auf.
Also übersetzt ist es eins von denen, je nachdem wie deine Konfiguration ist.
sha1($salt.sha1('Passwort'));
md5($salt.md5('Passwort'));
crc32($salt.crc32('Passwort'));
crypt($salt.crypt('Passwort'));
Dann kommt noch eine Einstellung hinzu, die uns sagt ob das ganze wie in dem eben genannten Beispiel abläuft oder ob die inneren Werte vertauscht werden.
Also beispielsweise noch folgende Möglichkeiten.
sha1(sha1('Passwort').$salt);
md5(md5('Passwort').$salt);
crc32(crc32('Passwort').$salt);
crypt(crypt('Passwort').$salt);
Also es kommt auf diverse Dinge drauf an.
Man muss sich damit schon auseinander setzen, wenn man jetzt eine direkte Verbindung vorhat.
Auf die Samp Server bezogen kann man nur sagen, dass das Sicherste überhaupt wirklich ist, wenn man per Script das Passwort schon crypten lassen kann.
Dann wird es nämlich direkt an die jeweiligen Dinge geschickt (MySQL/HTTP/Datei) ohne irgendwelche Möglichkeiten der Spionage
Beispielsweise mysql_debug(1) oder bei HTTP der Log.
<->
Okay Favorite.
Wir können gleich chatten.
Sonst heute Abend
Hallöchen,
mich hat gerade ein gewisser Suchty112 auf diesen Thread aufmerksam gemacht.
Und da dachte ich mir mal, ich kann dir helfen.
Vorweg:
Ich schätze mich selber als ~ Trainer ~ ein.
Also über Profi
Naja wie dem auch sei.
Ich programmiere bei GTA: Westcoast (Werbung in dem Forum hier vorhanden).
Dort benutzen wir zwar auch ein MySQL System, sogar aufgebaut auf mehrere Verbindungen...
... aber das spielt eigl. auch kein Rolle.
Da Copy & Paste Strafbar ist.
Ich habe nur folgende Fragen:
~ Muss ich so ein System dann extra per neuem Gamemode schreiben? Oder erhalte ich einen Teil des Scriptes? Oder erhalte ich alles?
~ Soll ich alles über Funktionen regeln? Oder reicht es auch ohne?
~ Du schreibst eine Verbindung zum Forum... soll man das System direkt mit dem Forum arbeiten lassen? (Register & Login)
~ ~ Wenn ja, um welches Forum handelt es sich?
~ ~ Wenn nein, Erhält man einen SQL Dump für die Register/Login Tabelle oder erhält man einen Zugang? (SQL Dump wäre besser)
Wie gesagt, ich könnte es dir, da ich auch RL habe, bis heute Abend machen (wäre bei mir bis 22 Uhr).
Oder ggf. wenn es schwieriger wird bis morgen Abend.
Kannst mich ja auch adden in ICQ, wenn du da vertrauen hast.
Steht alles im Profil
z Achse runterstellen.
Naja Z bringt es leider auch nicht.
Da muss ich auch garnicht rumspielen, denn die Z sagt ja nur die Höhe.
Ich hab bei dem folgenden nomma nachgedacht
SetPlayerPos(playerid, X - (Sin * 5.0), Y + (Cos * 5.0), Z + 1);
Bei den Einstellungen würde der Spieler immer genau vor dem Fahrzeug spawnen.
Das ich vllt. ein bisschen mehr rechnen muss.
Also z.B. bei Y so -> ( Y + ( Cos * 5.0 ) ) + 5
Das ist echt eine schlechte Umsetzung
Hallo Breadfish Community,
ja heute brauche ich mal Hilfe.
Auch wenn es eigentlich ein kleines Problem ist.
Mein Vorhaben:
Ich möchte meine Figur neben einem Wohnmobil / Journey ( 508 ) spawnen lassen.
Was mache ich?
Ich hole die Position von dem Wohnmobil, rechne den Sin und Cos Wert aus und lasse die Figur dann daneben spawnen.
Ich wollte euch mal fragen, ob ihr da vllt. einen besseren Weg für mich habt.
Oder überhaupt ob ihr eine Lösung für mich habt, da ich irgendwie die Geschichte mit dem richtigen Spawnen nicht schaffe
new Float:X,
Float:Y,
Float:Z,
Float:Rot,
Float:Sin,
Float:Cos;
GetVehiclePos(vehicleid, X, Y, Z);
GetVehicleZAngle(vehicleid, Rot);
Sin = floatsin(Rot, degrees);
Cos = floatcos(Rot, degrees);
SetPlayerPos(playerid, X - (Sin * 3.0), Y + (Cos * 3.0), Z + 1);
SetPlayerFacingAngle(playerid, Z + 180);(Nur ein Beispiel extra für forum.sa-mp.de)
Ich spiele die ganze Zeit mit der Zeile rum:
SetPlayerPos(playerid, X - (Sin * 3.0), Y + (Cos * 3.0), Z + 1);
X + ... oder X - ..., bzw. Y + ... oder Y - ...
Sin * 1, Sin * 2, Sin *3 und / oder Cos * 1, Cos * 2, Cos * 3
Ich hab schon fast alle Kombinationen ausprobiert
Is ja geil
Das Thema hier ist noch aktuell?
Ich habe eben mal gegoogelt weil ich das selbe Problem habe.
Eleganter kann man das aber mit MySQL lösen
So sieht es dann aus:
stock date(TimeFormat[], timestamp=0)
{
if(timestamp == 0)
timestamp = gettime();
new val[258], row[258], query[258];
format(query, sizeof query, "SELECT FROM_UNIXTIME(%d, '%s') AS datum_und_zeit;", timestamp, TimeFormat);
mysql_query(query);
mysql_store_result();
mysql_fetch_row(row);
mysql_fetch_field_row(val, "datum_und_zeit");
mysql_free_result();
return val;
}
Ist perfekt und dazu noch voll simpel
Einfach MySQL arbeiten lassen
Ja gut, Schade deswegen.
Wundert mich nur, dass man da nicht mal sagen kann "Jo Bubel, ich höre bei WC auf".
Weil wir stehen da, die User fragen was mit deinem DM Server ist usw.
http://dm.gtawc.de wurde ja auch programmiert usw.
Und dann machste mal eben was eigenes auf.
Aber okay, ich wünsch dir so Neutral wie ich bin viel Glück und Spaß mit deinem Projekt.
Und als Tipp gebe ich dir, die Vorstellungen nicht sofort zu machen, sondern erst wie du schreibst in 2 Monaten, wenn du den Usern auch was bieten kannst.
So verhaust du jetzt den ersten Eindruck.
(nur so nebenbei)
Vielleicht schau ich auch mal vorbei.
Muss man gucken
stock SendLanguageMessage(playerid, color, const message0[], const message1[]) SendClientMessage(playerid, color, (Language[playerid] == 0) ? (message0) : (message1));
mach mal
stock SendLanguageMessage(playerid, color, const message0[], const message1[]) return SendClientMessage(playerid, color, (Language[playerid] == 0) ? (message0) : (message1));
dann unlogisch:
return SendLanguageText(pla
und unten:
stock SendLanguageMessage(pla
mc1 = CreateVehicle(car,-2310.4114,-1677.9482,482.2255,21.5194,0,0,-1);
Das ist nur ein Warning.
Also eigl. nicht so schlimm.
Warnings kann man sogar ausschalten
Du musst jetzt z.B. um den weg zu bekommen, sowas machen:
mc1 = CreateVehicle(car,-2310.4114,-1677.9482,482.2255,21.5194,0,0,-1);
SetVehicleToRespawn(mc1);
Denn der Fehler ist ja:
symbol is assigned a value that is never used
Das bedeutet nur definieren bringt nichts.
Du musst das Ding auch benutzen
//edit:
Zitat/edit Fehler gefunden du musst natürlich eine Carid angeben und nicht einfach car;)
Deine Lösung ist eigl. auch gut
Ich bezieh meins auf direkt sein Script.
Aber sonst sag ich mal Top.
Dankeschön (fürs Lob :D)
Das praktische was ich finde, wenn du ein Update drauf spielen willst, machste einfach X/Beenden und kannst es hochladen.
Bei anderen Programmen musste erst das Restart Script beenden.
Aber okay, er hat eins und hier kann closed oder so
Oder damit NUR der Fahrer von dem Vehicle 444 das machen kann, ein:
If(GetPlayerVehicleID(playerid) != 444)
return 0;
if(strcmp(cmd, "/freefromcar", true) == 0)
{
tmp = strtok(cmdtext, idx);
if(!tmp[0])
return SendClientMessage(playerid, 0xFFFFFFFF, "Nutze /freefromcar [spielerid]");
if(!IsPlayerConnected(strval(tmp)))
return SendClientMessage(playerid, 0xFFFFFFFF, "Dieser Spieler ist nicht Online!");
new Float:posx, Float:posy, Float:posz;
GetPlayerPos(strval(tmp), posx, posy, posz);
if(!IsPlayerInRangeOfPoint(playerid, 10.0, posx, posy, posz))
return SendClientMessage(playerid, 0xFFFFFFFF, "Dieser Spieler ist zu weit weg!");
giveplayerid = ReturnUser(tmp);
new car = GetPlayerVehicleID(playerid);
PutPlayerInVehicle(giveplayerid, car, 2);
return 1;
}
AttachObjectToVehicle(3267,444,-0.039999,-1.839998,0.619999,0.000000,0.000000,330.000000);
AttachObjectToVehicle(objectid, vehicleid, Float:fOffsetX, Float:fOffsetY, Float:fOffsetZ, Float:fRotX, Float:fRotY, Float:RotZ);
AttachObjectToVehicle(3267,GetPlayerVehicleID(playerid),-0.039999,-1.839998,0.619999,0.000000,0.000000,330.000000);
Er hat nen Windows Server
Ich kann dir mal ein Script für Windows machen
Auch wenn es funktioniert
Hier noch ein Script, das auch dein Interior sowie deine Virtuelle Welt speichert.
Damit du auch wirklich wieder überall spawnst.
enum TodEnum {bool:isTod, Float:pos[4], posExtra[2]};
new TodInfo[MAX_PLAYERS][TodEnum];
public OnPlayerDeath(playerid, killerid, reason)
{
GetPlayerPos(playerid, TodInfo[playerid][pos][0], TodInfo[playerid][pos][1], TodInfo[playerid][pos][2]);
GetPlayerFacingAngle(playerid, TodInfo[playerid][pos][3]);
TodInfo[playerid][posExtra][0] = GetPlayerVirtualWorld(playerid);
TodInfo[playerid][posExtra][1] = GetPlayerInterior(playerid);
TodInfo[playerid][isTod] = true;
return 1;
}
public OnPlayerSpawn(playerid)
{
if(TodInfo[playerid][isTod] == true)
{
SetPlayerPos(playerid, TodInfo[playerid][pos][0], TodInfo[playerid][pos][1], TodInfo[playerid][pos][2]);
SetPlayerFacingAngle(playerid, TodInfo[playerid][pos][3]);
SetPlayerVirtualWorld(playerid, TodInfo[playerid][posExtra][0]);
SetPlayerInterior(playerid, TodInfo[playerid][posExtra][1]);
SetPlayerHealth(playerid, 100);
}
TodInfo[playerid][isTod] = false;
return 1;
}
@Halu:
Wenn er nicht weiß wie er das mit Strings usw. macht dann hilft deins glaube ich nicht weiter
Pawno:
Von der Ferne kann ich dir eigl. auch nur sagen, dass du beim Bannen den Grund speichern musst und beim Connecten einfach erst den Grund ausgeben und dann direkt kicken.
Warum man dafür jetzt nen Timer machen soll ist fraglich
Wenn man dir helfen soll müsstest du uns vllt. den OnPlayerConnect Teil geben und den Ban Teil, wo der jenige gebannt wird