NPC, zapisuje się do pliku, lecz już nie w...
GoldeN
18.04.2011
Witam, mam problem. Wyciągnąłem kod z Diablo LOD na tworzenie i zapisywanie pozycji NPC w pliku i automatyczne jej tworzenie po zmianie mapy, lecz mam problem:
Stawiam sobie ze trzy te modele "NPC", wszystko pięknie, do pliku zapisuje ich pozycję, zmieniam mapę, no i nie spawnuje. Nawet ustawiłem ich spawn na komendę i także nic. CHMODY nadałem na folder w którym się znajdują zapisy pozycji na mapach (777) ale to też nic nie dało. Podaję trzy funkcję, w których mniemam, że mam błąd:
Użytkownik GoldeN edytował ten post 18.04.2011 23:40
Stawiam sobie ze trzy te modele "NPC", wszystko pięknie, do pliku zapisuje ich pozycję, zmieniam mapę, no i nie spawnuje. Nawet ustawiłem ich spawn na komendę i także nic. CHMODY nadałem na folder w którym się znajdują zapisy pozycji na mapach (777) ale to też nic nie dało. Podaję trzy funkcję, w których mniemam, że mam błąd:
public plugin_cfg()
{
get_configsdir(g_ConfigsDir, 63);
formatex(g_ItemOriginDir, 63, "%s/%s", g_ConfigsDir, inventory_dir_name);
//new File[192];
if( !dir_exists(g_ItemOriginDir) )
{
mkdir(g_ItemOriginDir);
}
else
{
new CurMap[32];
get_mapname(CurMap, 31);
Load_Origins_Charsi(CurMap);
}
}
public Save_Origin_Charsi(CurMap[], Origin[3])
{
new MapFile[64], Text[64]
format(MapFile, 63, "%s/%s_charsi.cfg", g_ItemOriginDir, CurMap)
if(!file_exists(MapFile))
{
new Comments[64]
format(Comments, 63, "; Mapa pochodzenia dla pozycji %s", CurMap)
write_file(MapFile, Comments, -1)
}
format(Text, 63, "%i %i %i", Origin[0], Origin[1], Origin[2])
write_file(MapFile, Text, -1)
}
public Load_Origins_Charsi(CurMap[])
{
new MapFile[64]
format(MapFile, 63, "%s/%s_charsi.cfg", g_ItemOriginDir, CurMap)
if(!file_exists(MapFile))
return PLUGIN_CONTINUE;
g_MapItemNum1 = 0
for(new i = 1; i <= MAX_MAPITEMS; ++i)
{
g_MapItemOrgins1[i][0] = 0
g_MapItemOrgins1[i][1] = 0
g_MapItemOrgins1[i][2] = 0
}
new Text[64], Line = 0, Len = 0;
while(read_file(MapFile, Line++, Text, 63, Len))
{
if((Text[0]==';') || !Len) {
continue
}
if(g_MapItemNum1 >= MAX_MAPITEMS)
{
log_amx("Maksymalna ilosc elementow mapy zostala osiagnieta, proszę zmienic ja komenda MAX_MAPITEMS")
break
}
new iOrigin[3][16];
parse(Text, iOrigin[0], 15, iOrigin[1], 15, iOrigin[2], 15)
g_MapItemNum1++
g_MapItemOrgins1[g_MapItemNum][0] = str_to_num(iOrigin[0])
g_MapItemOrgins1[g_MapItemNum][1] = str_to_num(iOrigin[1])
g_MapItemOrgins1[g_MapItemNum][2] = str_to_num(iOrigin[2])
}
return PLUGIN_CONTINUE
}
Użytkownik GoldeN edytował ten post 18.04.2011 23:40
diablix
19.04.2011
To może tak
#include <amxmodx>
#include <amxmisc>
#include <engine>
#define VERSION "1.0"
new gszFile[128];
public plugin_init(){
register_plugin("Zapis npc", VERSION, "diablix");
new szDir[128], szMap[32];
get_basedir(szDir, sizeof szDir);
add(szDir, sizeof szDir, "/NPC_SAVES");
if (!dir_exists(szDir))
mkdir(szDir);
get_mapname(szMap, sizeof szMap);
formatex(gszFile, 96, "%s/%s.txt", szDir, szMap);
register_clcmd("say /zapisz", "Save");
}
public plugin_cfg() Load();
public Save(id){
new file = fopen(gszFile, "wt");
new ent = -1;
new Float:fOrigin[3];
new szData[512];
while((ent = find_ent_by_class(ent, "klasa_bytu"))){ // do podmiany
entity_get_vector(ent, EV_VEC_origin, fOrigin);
formatex(szData, 512, "%f %f %f^n", fOrigin[0], fOrigin[1], fOrigin[2]);
fputs(file, szData);
}
client_print(id, 3, "Zapisano!");
fclose(file);
}
Load(){
if (file_exists(gszFile)){
new szLine[768], sz1[16], sz2[16], sz3[16];
new Float:vVec1[3];
new f = fopen(gszFile, "rt");
while (!feof(f)){
fgets(f, szLine, 767);
remove_quotes(szLine);
parse(szLine, sz1, 16, sz2, 16, sz3, 16);
vVec1[0] = str_to_float(sz1);
vVec1[1] = str_to_float(sz2);
vVec1[2] = str_to_float(sz3);
//FUNKCJA_STWORZ_BYT(vVec);
}
fclose(f);
}
}
Owner123
20.04.2011
Albo najzwyklejsze delete_file
.
Użytkownik Owner123 edytował ten post 20.04.2011 15:44

Użytkownik Owner123 edytował ten post 20.04.2011 15:44