Jump to content
  • 0

pomoc auto


Twixo

Dotaz

Chcem sa zdokonaliť v ukladaní vecí pomocou základných funkcií z a_samp includu. Chcem sa ťa spýtať, že čo by som mal približne vedieť (funkcie, atd. + či by si mi neposlal nejake odkazy na samp wiky) na to, aby som dokázal ukladať napr. vozidlá (zatiaľ bez tuningu) a bolo by to napr. na tri sloty. Bol by som za radu :)  Zatiaľ chcem skúsiť základne funckie sampu, čiže nejaké y_ini a pod. mi neposielajte zatial.

Edited by Twixo
Link to comment
Share on other sites

7 odpovědí na tuto otázku

Recommended Posts

  • 0

Asi máš na mysli includ file.inc, ktorý sa nachádza v priečinku pawno/include.

Toto je jeho obsah, teda funkcie, ktoré môžeš používať:

/* File input/output functions
 *
 * (c) Copyright 2004-2005, ITB CompuPhase
 * This file is provided as is (no warranties).
 */
#if defined _file_included
  #endinput
#endif
#define _file_included
#pragma library File

enum filemode
    {
    io_read,            /* file must exist */
    io_write,           /* creates a new file */
    io_readwrite,       /* opens an existing file, or creates a new file */
    io_append,          /* appends to file (write-only) */
    }

enum seek_whence
    {
    seek_start,
    seek_current,
    seek_end,
    }

const EOF = -1;

native File:fopen(const name[], filemode: mode = io_readwrite);
native bool:fclose(File: handle);
native File:ftemp();
native bool:fremove(const name[]);

native fwrite(File: handle, const string[]);
native fread(File: handle, string[], size = sizeof string, bool: pack = false);
native bool:fputchar(File: handle, value, bool: utf8 = true);
native fgetchar(File: handle, value, bool: utf8 = true);
native fblockwrite(File: handle, const buffer[], size = sizeof buffer);
native fblockread(File: handle, buffer[], size = sizeof buffer);

native fseek(File: handle, position = 0, seek_whence: whence = seek_start);
native flength(File: handle);
native fexist(const pattern[]);
native bool:fmatch(name[], const pattern[], index = 0, size = sizeof name);

Jednoducho si daj názov funkcie do googlu (napr. "fopen samp wiki") a nájdeš vysvetlenie čo daná funkcia robí.


*fmatch() nefunguje a zdá sa mi, že fopen() s módom io_readwrite ak najprv zapisuješ a potom čítaš - nefunguje, lebo fwrite() neflushne buffer súboru. Ale to sa mi len zdá, neviem už či to tak je naozaj. (io_readwrite najprv čítanie a potom zapisovanie ale určite funguje v poriadku)

Link to comment
Share on other sites

  • 2

Ak chceš zastaviť kód na mieste komentára bez toho, aby si dostal "unknown command", môžeš použiť return 1. Btw možno by si ten kód mohol podstatne zredukovať využitím for cyklu.

Edited by DuFF
  • Líbí se mi to! (+1) 1
Link to comment
Share on other sites

  • 0

Zdravím,

Ulož si soubor s nickem hráče, tam si ulož ID vozidel a jejich pozice. 

Tedy jestli to chápu správně, že to má být dělané na hráče.

Odkazy z wiki Ti nepošlu, nechce se mi hledat. :d 

GetPlayerPos na zjištění pozice hráče a uložení auta na jeho pozici. (/GetVehiclePos)

File Functions, abys věděl, jak ukládat do souborů

Také se nauč s proměnnými a vlastně viz. všechny návody pro Začátečníky. 

Zatím.

Link to comment
Share on other sites

  • 0

like that (zatial iba save bez loadu)? a ešte nejak pomoc s poznamkami, ak by ste mohli

#define FILTERSCRIPT

#include <a_samp>
#include <zcmd>
#include <sscanf2>

new bool:EMPTYSlot[3][MAX_PLAYERS];
new Float:SlotX[3][MAX_PLAYERS],Float:SlotY[3][MAX_PLAYERS],Float:SlotZ[3][MAX_PLAYERS],Model[3][MAX_PLAYERS];

stock Jmeno(playerid)
{
new p[MAX_PLAYER_NAME];
GetPlayerName(playerid,p,MAX_PLAYER_NAME);
return p;
}

CMD:saveveh(playerid,params[])
{
	new Float:x,Float:y,Float:z,model,string[128],str[50];
	if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, -1,"tupec, nie si v aute");
	GetVehiclePos(GetPlayerVehicleID(playerid),x,y,z);
	model = GetVehicleModel(GetPlayerVehicleID(playerid));
	format(string,sizeof(string),"%s’vehicles.sav",Jmeno(playerid));
	new File:veh = fopen(string, io_write);
	if(EMPTYSlot[0][playerid] == false)
	{
	SlotX[0][playerid] = x;
	SlotY[0][playerid] = y;
	SlotZ[0][playerid] = z;
	Model[0][playerid] = model;
	format(str,sizeof(str),"%f\r\n",SlotX[0][playerid]);fwrite(veh,str);
    format(str,sizeof(str),"%f\r\n",SlotY[0][playerid]);fwrite(veh,str);
    format(str,sizeof(str),"%f\r\n",SlotZ[0][playerid]);fwrite(veh,str);
    format(str,sizeof(str),"%d\r\n",Model[0][playerid]);fwrite(veh,str);
    format(str,sizeof(str),"%f\r\n",SlotX[1][playerid]);fwrite(veh,str);
    format(str,sizeof(str),"%f\r\n",SlotY[1][playerid]);fwrite(veh,str);
    format(str,sizeof(str),"%f\r\n",SlotZ[1][playerid]);fwrite(veh,str);
    format(str,sizeof(str),"%d\r\n",Model[1][playerid]);fwrite(veh,str);
   	format(str,sizeof(str),"%f\r\n",SlotX[2][playerid]);fwrite(veh,str);
    format(str,sizeof(str),"%f\r\n",SlotY[2][playerid]);fwrite(veh,str);
    format(str,sizeof(str),"%f\r\n",SlotZ[2][playerid]);fwrite(veh,str);
    format(str,sizeof(str),"%d\r\n",Model[2][playerid]);fwrite(veh,str);
    SendClientMessage(playerid,-1,"test, uložil si do slotu 0");
	fclose(veh);
	EMPTYSlot[0][playerid] = true;
	return 0; //potreboval som, aby neukladalo ďalej, ako to lepšie zastaviť? lebo mi to dá Unkown command, ale prikaz fungoval potialto, ako mal
	}
	if(EMPTYSlot[1][playerid] == false)
	{
	SlotX[1][playerid] = x;
	SlotY[1][playerid] = y;
	SlotZ[1][playerid] = z;
	Model[1][playerid] = model;
	format(str,sizeof(str),"%f\r\n",SlotX[0][playerid]);fwrite(veh,str);
    format(str,sizeof(str),"%f\r\n",SlotY[0][playerid]);fwrite(veh,str);
    format(str,sizeof(str),"%f\r\n",SlotZ[0][playerid]);fwrite(veh,str);
    format(str,sizeof(str),"%d\r\n",Model[0][playerid]);fwrite(veh,str);
    format(str,sizeof(str),"%f\r\n",SlotX[1][playerid]);fwrite(veh,str);
    format(str,sizeof(str),"%f\r\n",SlotY[1][playerid]);fwrite(veh,str);
    format(str,sizeof(str),"%f\r\n",SlotZ[1][playerid]);fwrite(veh,str);
    format(str,sizeof(str),"%d\r\n",Model[1][playerid]);fwrite(veh,str);
   	format(str,sizeof(str),"%f\r\n",SlotX[2][playerid]);fwrite(veh,str);
    format(str,sizeof(str),"%f\r\n",SlotY[2][playerid]);fwrite(veh,str);
    format(str,sizeof(str),"%f\r\n",SlotZ[2][playerid]);fwrite(veh,str);
    format(str,sizeof(str),"%d\r\n",Model[2][playerid]);fwrite(veh,str);
	fclose(veh);
	SendClientMessage(playerid,-1,"test, uložil si do slotu 1");
	EMPTYSlot[1][playerid] = true;
	return 0;
	}
	if(EMPTYSlot[2][playerid] == false)
	{
	SlotX[2][playerid] = x;
	SlotY[2][playerid] = y;
	SlotZ[2][playerid] = z;
	Model[2][playerid] = model;
	format(str,sizeof(str),"%f\r\n",SlotX[0][playerid]);fwrite(veh,str);
    format(str,sizeof(str),"%f\r\n",SlotY[0][playerid]);fwrite(veh,str);
    format(str,sizeof(str),"%f\r\n",SlotZ[0][playerid]);fwrite(veh,str);
    format(str,sizeof(str),"%d\r\n",Model[0][playerid]);fwrite(veh,str);
    format(str,sizeof(str),"%f\r\n",SlotX[1][playerid]);fwrite(veh,str);
    format(str,sizeof(str),"%f\r\n",SlotY[1][playerid]);fwrite(veh,str);
    format(str,sizeof(str),"%f\r\n",SlotZ[1][playerid]);fwrite(veh,str);
    format(str,sizeof(str),"%d\r\n",Model[1][playerid]);fwrite(veh,str);
   	format(str,sizeof(str),"%f\r\n",SlotX[2][playerid]);fwrite(veh,str);
    format(str,sizeof(str),"%f\r\n",SlotY[2][playerid]);fwrite(veh,str);
    format(str,sizeof(str),"%f\r\n",SlotZ[2][playerid]);fwrite(veh,str);
    format(str,sizeof(str),"%d\r\n",Model[2][playerid]);fwrite(veh,str);
	fclose(veh);
	SendClientMessage(playerid,-1,"test, uložil si do slotu 2");
	EMPTYSlot[2][playerid] = true;
	return 0;
	}
	return 1;
}

CMD:veh(playerid, params[]) //prikaz na auto, aby sa dalo testovať
{
	new vehid;
	if(sscanf(params, "i",vehid)) return SendClientMessage(playerid, 0xFF0000FF, "[ ! ] {FFFFFF} /veh [ vehicleid ]");
	if(vehid < 400 || vehid > 611) return SendClientMessage(playerid, 0xFF0000FF, "[ ! ] {FFFFFF} Použí id 400 - 611");
	new Float:x,Float:y,Float:z,Float:Angle;
	GetPlayerPos(playerid, x,y,z);
	GetPlayerFacingAngle(playerid,Angle);
	new auto = CreateVehicle(vehid,x,y,z,Angle,random(255),random(250),1000,5);
	new svet = GetPlayerVirtualWorld(playerid);
	SetVehicleVirtualWorld(auto, svet);
	PutPlayerInVehicle(playerid,auto,0);
	return 1;
}

 

Edited by Twixo
Link to comment
Share on other sites

  • 0
před 1 hodinou, DuFF said:

Ak chceš zastaviť kód na mieste komentára bez toho, aby si dostal "unknown command", môžeš použiť return 1. Btw možno by si ten kód mohol podstatne zredukovať využitím for cyklu.

return 1 funguje, dk.

Edited by Twixo
Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
×
×
  • Create New...