Discord sunucumuz açılmıştır, hepinizi bekleriz

https://discord.gg/43gGDQe6tS

Döngü ve Değişken hakkında bir sıkıntım!

Eklenti sorunlarınız ve özel eklenti istekleriniz

Moderatör: Moderatörler

Kullanıcı avatarı

Konu Sahibi
cbmarksman
Mesajlar: 92
Kayıt: Prş Ağu 20, 2020 11:24 pm

Döngü ve Değişken hakkında bir sıkıntım!

Mesaj gönderen cbmarksman »

Senin o yaptığın değişkene atama mantığı ile yapabilirsek iyi olur aslında

Link:
Linklerini gizle
Linki Kopyala
Kullanıcı avatarı

Colditz
Mesajlar: 2574
Kayıt: Çrş Ağu 23, 2017 9:17 pm

Döngü ve Değişken hakkında bir sıkıntım!

Mesaj gönderen Colditz »

Array kullanman gerekiyor. Array kullanımını weapon pick up eklentisinde bulabilirsin ya da google a "alliedmodders array" yazdığın zaman zaten mükemmel şekilde anlatılmış hâli var. Benzer şekilde yapacaksın.

Link:
Linklerini gizle
Linki Kopyala
Kullanıcı avatarı

Konu Sahibi
cbmarksman
Mesajlar: 92
Kayıt: Prş Ağu 20, 2020 11:24 pm

Döngü ve Değişken hakkında bir sıkıntım!

Mesaj gönderen cbmarksman »

Colditz yazdı: Sal Şub 02, 2021 4:59 pm Array kullanman gerekiyor. Array kullanımını weapon pick up eklentisinde bulabilirsin ya da google a "alliedmodders array" yazdığın zaman zaten mükemmel şekilde anlatılmış hâli var. Benzer şekilde yapacaksın.
Bunu yapacak kadar bilgiye sahip değilim eve iyi anlatmış Yektanın reklam panosu eklentisinde şöyle bir kısım buldum buradan yola çıkabilirmiyiz ?

Kod: Tümünü seç

public ObjeleriYukle(){
    new map[32]
    get_mapname(map, 31)
    format(g_MapFile, sizeof(g_MapFile), "maps/%s.reklampano.cfg", map)
    if (file_exists(g_MapFile)) {
        new data[124], len
        new line = 0
        new coord[7][8]
        new Float:origin[3]
        new Float:originaldegistir[3];
        new bodydegeri, skindegeri;
        while((line = read_file(g_MapFile , line , data , 123 , len)))
        {
            if (len < 2 || data[0] == ';' || data[0] == '/')
                continue;
            parse(data, coord[0], 7, coord[1], 7, coord[2], 7, coord[3], 7, coord[4], 7, coord[5], 1, coord[6], 1)
            origin[0] = (str_to_float(coord[0]))
            origin[1] = (str_to_float(coord[1]))
            origin[2] = (str_to_float(coord[2]))
            originaldegistir[1] = (str_to_float(coord[3]))
            originaldegistir[0] = 0.0
            originaldegistir[2] = (str_to_float(coord[4]))
            bodydegeri = (str_to_num(coord[5]))
            skindegeri = (str_to_num(coord[6]))
            ObjeleriOlustur(origin, bodydegeri, 0, originaldegistir, skindegeri)
        }
    }
}

Link:
Linklerini gizle
Linki Kopyala
Kullanıcı avatarı

Colditz
Mesajlar: 2574
Kayıt: Çrş Ağu 23, 2017 9:17 pm

Döngü ve Değişken hakkında bir sıkıntım!

Mesaj gönderen Colditz »

Hayır.

Kod: Tümünü seç

native read_file(const file[], line, text[], len, &txtlen = 0);

Note
This native is expensive. Consider the use of new file natives (fopen(), fgets(), etc.)
if purpose is to read several lines of a file.

Link:
Linklerini gizle
Linki Kopyala
Kullanıcı avatarı

Konu Sahibi
cbmarksman
Mesajlar: 92
Kayıt: Prş Ağu 20, 2020 11:24 pm

Döngü ve Değişken hakkında bir sıkıntım!

Mesaj gönderen cbmarksman »

Colditz yazdı: Sal Şub 02, 2021 5:16 pm Hayır.

Kod: Tümünü seç

native read_file(const file[], line, text[], len, &txtlen = 0);

Note
This native is expensive. Consider the use of new file natives (fopen(), fgets(), etc.)
if purpose is to read several lines of a file.
Sırasıyla hangi yolu izlemem gerektiğini söylüyebilirmisiniz peki ?

Link:
Linklerini gizle
Linki Kopyala
Kullanıcı avatarı

Konu Sahibi
cbmarksman
Mesajlar: 92
Kayıt: Prş Ağu 20, 2020 11:24 pm

Döngü ve Değişken hakkında bir sıkıntım!

Mesaj gönderen cbmarksman »

Colditz yazdı: Sal Şub 02, 2021 5:16 pm Hayır.

Kod: Tümünü seç

native read_file(const file[], line, text[], len, &txtlen = 0);

Note
This native is expensive. Consider the use of new file natives (fopen(), fgets(), etc.)
if purpose is to read several lines of a file.
Yada daha bir kısayol düşündüm şimdi sizin bana atmış olduğun eklentide 3 tane origini çekiyor ya onu 4 yapıp 4cüyü ayrı bir değişkene atasak daha kolay olur sanırım

Kod: Tümünü seç

de_dust2 "-2139.838 -179.635 65.001 48.000"
mesela buradaki 48'i

Link:
Linklerini gizle
Linki Kopyala
Kullanıcı avatarı

Konu Sahibi
cbmarksman
Mesajlar: 92
Kayıt: Prş Ağu 20, 2020 11:24 pm

Döngü ve Değişken hakkında bir sıkıntım!

Mesaj gönderen cbmarksman »

Arkadaşlar buna ihtiyacım var bakabilecek biri yokmu lütfen.

Link:
Linklerini gizle
Linki Kopyala
Kullanıcı avatarı

Konu Sahibi
cbmarksman
Mesajlar: 92
Kayıt: Prş Ağu 20, 2020 11:24 pm

Döngü ve Değişken hakkında bir sıkıntım!

Mesaj gönderen cbmarksman »

+Güncel

Link:
Linklerini gizle
Linki Kopyala
Kullanıcı avatarı

Colditz
Mesajlar: 2574
Kayıt: Çrş Ağu 23, 2017 9:17 pm

Döngü ve Değişken hakkında bir sıkıntım!

Mesaj gönderen Colditz »

Buyur istediğin şey bu sanırım. İni dosyasından originleri çekiyor ve rastgele bunlardan birini çekiyorsun.

Bir ini dosyası
amxmodx/configs/origins/de_dust2.ini

Kod: Tümünü seç

300 800 -1 400 100.2
500 100	-2 -4 500.1
132.0 500.2 900.2 4.3 5.0
Eklenti

Kod: Tümünü seç

#include <amxmodx>

enum _:ArrayData {
    Float:X,
	Float:Y,
	Float:Z,
	Float:ANGLES,
	Float:DEGREE
};

new Array:g_aOrigins;

public plugin_precache() {
	new szFileName[128], szMapName[32];
	get_mapname(szMapName, charsmax(szMapName));
	get_localinfo("amxx_configsdir", szFileName, charsmax(szFileName));
	add(szFileName, charsmax(szFileName), fmt("/origins/%s.ini", szMapName));

	if(!file_exists(szFileName)) {
		pause("d");
		return;
	}

	g_aOrigins = ArrayCreate(ArrayData);

	new iFile = fopen(szFileName, "rt");

	if(iFile) {
		new szBuffer[MAX_FMT_LENGTH], szOrigins[ArrayData][32], szData[ArrayData];

		while(!feof(iFile)) {
			fgets(iFile, szBuffer, charsmax(szBuffer));
			trim(szBuffer);

			if(szBuffer[0] == EOS || szBuffer[0] == ';') {
				continue;
			}

			parse(szBuffer, szOrigins[X], charsmax(szOrigins[]), szOrigins[Y], charsmax(szOrigins[]),
				szOrigins[Z], charsmax(szOrigins[]), szOrigins[ANGLES], charsmax(szOrigins[]), szOrigins[DEGREE], charsmax(szOrigins[]));

			szData[X] = str_to_float(szOrigins[X]);
			szData[Y] = str_to_float(szOrigins[Y]);
			szData[Z] = str_to_float(szOrigins[Z]);
			szData[ANGLES] = str_to_float(szOrigins[ANGLES]);
			szData[DEGREE] = str_to_float(szOrigins[DEGREE]);

			ArrayPushArray(g_aOrigins, szData);
		}
		fclose(iFile);
	}
}

public plugin_end() {
	ArrayDestroy(g_aOrigins);
}

GetRandomOrigin(Float:flOrigin[]) {
	new szData[ArrayData];
	ArrayGetArray(g_aOrigins, random(ArraySize(g_aOrigins)), szData);

	flOrigin[X] = szData[X];
	flOrigin[Y] = szData[Y];
	flOrigin[Z] = szData[Z];
	flOrigin[ANGLES] = szData[ANGLES];
	flOrigin[DEGREE] = szData[DEGREE];
}
Eklenti içinde nasıl rastgele çekebilirim?

Kod: Tümünü seç

//ArrayData olmak zorunda. Aksi takdirde hata verebilir. İni dosyasında 5 adet origin olmalı.
new Float:szData[ArrayData];
GetRandomOrigin(szData);

server_print("[%f][%f][%f][%f][%f]", szData[X], szData[Y], szData[Z], szData[ANGLES], szData[DEGREE]);

Link:
Linklerini gizle
Linki Kopyala
Kullanıcı avatarı

Konu Sahibi
cbmarksman
Mesajlar: 92
Kayıt: Prş Ağu 20, 2020 11:24 pm

Döngü ve Değişken hakkında bir sıkıntım!

Mesaj gönderen cbmarksman »

Colditz yazdı: Prş Şub 04, 2021 7:37 am Buyur istediğin şey bu sanırım. İni dosyasından originleri çekiyor ve rastgele bunlardan birini çekiyorsun.

Bir ini dosyası
amxmodx/configs/origins/de_dust2.ini

Kod: Tümünü seç

300 800 -1 400 100.2
500 100	-2 -4 500.1
132.0 500.2 900.2 4.3 5.0
Eklenti

Kod: Tümünü seç

#include <amxmodx>

enum _:ArrayData {
    Float:X,
	Float:Y,
	Float:Z,
	Float:ANGLES,
	Float:DEGREE
};

new Array:g_aOrigins;

public plugin_precache() {
	new szFileName[128], szMapName[32];
	get_mapname(szMapName, charsmax(szMapName));
	get_localinfo("amxx_configsdir", szFileName, charsmax(szFileName));
	add(szFileName, charsmax(szFileName), fmt("/origins/%s.ini", szMapName));

	if(!file_exists(szFileName)) {
		pause("d");
		return;
	}

	g_aOrigins = ArrayCreate(ArrayData);

	new iFile = fopen(szFileName, "rt");

	if(iFile) {
		new szBuffer[MAX_FMT_LENGTH], szOrigins[ArrayData][32], szData[ArrayData];

		while(!feof(iFile)) {
			fgets(iFile, szBuffer, charsmax(szBuffer));
			trim(szBuffer);

			if(szBuffer[0] == EOS || szBuffer[0] == ';') {
				continue;
			}

			parse(szBuffer, szOrigins[X], charsmax(szOrigins[]), szOrigins[Y], charsmax(szOrigins[]),
				szOrigins[Z], charsmax(szOrigins[]), szOrigins[ANGLES], charsmax(szOrigins[]), szOrigins[DEGREE], charsmax(szOrigins[]));

			szData[X] = str_to_float(szOrigins[X]);
			szData[Y] = str_to_float(szOrigins[Y]);
			szData[Z] = str_to_float(szOrigins[Z]);
			szData[ANGLES] = str_to_float(szOrigins[ANGLES]);
			szData[DEGREE] = str_to_float(szOrigins[DEGREE]);

			ArrayPushArray(g_aOrigins, szData);
		}
		fclose(iFile);
	}
}

public plugin_end() {
	ArrayDestroy(g_aOrigins);
}

GetRandomOrigin(Float:flOrigin[]) {
	new szData[ArrayData];
	ArrayGetArray(g_aOrigins, random(ArraySize(g_aOrigins)), szData);

	flOrigin[X] = szData[X];
	flOrigin[Y] = szData[Y];
	flOrigin[Z] = szData[Z];
	flOrigin[ANGLES] = szData[ANGLES];
	flOrigin[DEGREE] = szData[DEGREE];
}
Eklenti içinde nasıl rastgele çekebilirim?

Kod: Tümünü seç

//ArrayData olmak zorunda. Aksi takdirde hata verebilir. İni dosyasında 5 adet origin olmalı.
new Float:szData[ArrayData];
GetRandomOrigin(szData);

server_print("[%f][%f][%f][%f][%f]", szData[X], szData[Y], szData[Z], szData[ANGLES], szData[DEGREE]);
Bu kodlar bir çok yerde işime yarayacak çok ama çok teşekkürler :)

Link:
Linklerini gizle
Linki Kopyala
Cevapla