コメント
このコメントは、【Wiki】スクリプト/ランキング関数へのコメントです。コメントの内容
コメントの内容(一番最初の投稿)
mosmoss(投稿日:2017/04/08 21:04/08/17)
これ私も使えませんでした。
サーバーにセーブしてるデータの第一引数は文字列でないといけません、という感じのメッセージが出て、
Rank_add()やRank_get()内の、データをロードした後の数行にエラーが出てるみたいでした。
あと、setTextの中身が表示されませんでした。
[ code #使用時はこの関数のみ #第1引数:配列 第2引数:ソート対象のインデックス 第3引数:昇順 true / 降順 false def sortArray2(arr,index,ord) return quickSort2(arr,index,0,(getArrayLength(arr) - 1),ord) end #配列ソート def pivot(arr,i,j,ord) k = i + 1 while (k <= j) && (arr[i] == arr[k]) do k = k + 1; end if k > j then return -1; end if ord if arr[i] >= arr[k] then return i; end else if arr[i] <= arr[k] then return i; end end return k end def partition(arr,i,j,x,ord) l = i; r = j while l <= r if ord while (l <= j) && (arr[l] < x) do l = l + 1; end while (r >= i) && (arr[r] >= x) do r = r - 1; end else while (l <= j) && (arr[l] > x) do l = l + 1; end while (r >= i) && (arr[r] <= x) do r = r - 1; end end if l <= r t = arr[l]; arr[l] = arr[r]; arr[r] = t l = l + 1; r = r - 1 end end return l end def quickSort(arr,i,j,ord) if i != j p = pivot(arr,i,j,ord) if p != -1 k = partition(arr,i,j,arr[p],ord) arr = quickSort(arr,i,(k - 1),ord) arr = quickSort(arr,k,j,ord) end end return arr end #使用時はこの関数のみ #第1引数:配列 第2引数:昇順 true / 降順 false def sortArray(arr,ord) return quickSort(arr,0,(getArrayLength(arr) - 1),ord) end #waitTime(1000) #saveGameData("ranking", "9999999999,7160,7064,6976,6448,6204") ]
上を開始スクリプトやチャプターにコピーして、
最後の二行のコメントを外す(初期設定)
サーバーにセーブしてるデータの第一引数は文字列でないといけません、という感じのメッセージが出て、
Rank_add()やRank_get()内の、データをロードした後の数行にエラーが出てるみたいでした。
あと、setTextの中身が表示されませんでした。
[ code #使用時はこの関数のみ #第1引数:配列 第2引数:ソート対象のインデックス 第3引数:昇順 true / 降順 false def sortArray2(arr,index,ord) return quickSort2(arr,index,0,(getArrayLength(arr) - 1),ord) end #配列ソート def pivot(arr,i,j,ord) k = i + 1 while (k <= j) && (arr[i] == arr[k]) do k = k + 1; end if k > j then return -1; end if ord if arr[i] >= arr[k] then return i; end else if arr[i] <= arr[k] then return i; end end return k end def partition(arr,i,j,x,ord) l = i; r = j while l <= r if ord while (l <= j) && (arr[l] < x) do l = l + 1; end while (r >= i) && (arr[r] >= x) do r = r - 1; end else while (l <= j) && (arr[l] > x) do l = l + 1; end while (r >= i) && (arr[r] <= x) do r = r - 1; end end if l <= r t = arr[l]; arr[l] = arr[r]; arr[r] = t l = l + 1; r = r - 1 end end return l end def quickSort(arr,i,j,ord) if i != j p = pivot(arr,i,j,ord) if p != -1 k = partition(arr,i,j,arr[p],ord) arr = quickSort(arr,i,(k - 1),ord) arr = quickSort(arr,k,j,ord) end end return arr end #使用時はこの関数のみ #第1引数:配列 第2引数:昇順 true / 降順 false def sortArray(arr,ord) return quickSort(arr,0,(getArrayLength(arr) - 1),ord) end #waitTime(1000) #saveGameData("ranking", "9999999999,7160,7064,6976,6448,6204") ]
上を開始スクリプトやチャプターにコピーして、
最後の二行のコメントを外す(初期設定)
score=0 #このゼロの代わりに点数を入れることで降順の5位までのランキングができます a=loadGameData("ranking") a = splitString(a, ",") #文字列を配列に i=0 while i < getArrayLength(a) a[i]=toNumber(a[i]) #文字列の配列を数値の配列に i=i+1 end a=sortArray(a,false)#ソートをかける if score > a[getArrayLength(a)-1] popArray(a) pushArray(a, score) i=0 while i < getArrayLength(a) a[i]=toString(a[i]) #数値の配列を文字列の配列に i=i+1 end a=joinArray(a, ",") #配列を文字列に変換 waitTime(1000) saveGameData("ranking", a) #サーバーに保存 a = splitString(a, ",") #文字列を配列に i=0 while i < getArrayLength(a) a[i]=toNumber(a[i]) #文字の配列を数値の配列に i=i+1 end a=sortArray(a,false)#ソートをかける end #ランキング表示のメッセージ作りここから s="ランキング" i = 1 while i < getArrayLength(a) s = s+"\n"+ i+ "位 "+ a[i] +"点" i = i + 1 end #画面テキスト設定############### setTextFontSize(15) setTextFontColor(255, 255, 255) set[x] = 325; set[y] = 80; set[w] = 800; set[h] = 300 text_e = createText(set[x], set[y], set[w], set[h]) setText(text_e, s) #テキスト表示 #################################### speak(s) #スピーク表示
サーバーにセーブしてるデータの第一引数は文字列でないといけません、という感じのメッセージが出て、
Rank_add()やRank_get()内の、データをロードした後の数行にエラーが出てるみたいでした。
あと、setTextの中身が表示されませんでした。
関数が読めなくて原因がわからなかったため、
応急処置的に作ったものを代わりに載せておきます。
上を開始スクリプトやチャプターにコピーして、
最後の二行のコメント#を外してゲームを起動(初期設定)
その後コメント#をまたつける。
(この場合、1位が7160~5位が6204と表示されます、お好みで調整してください)
ランキングにスコアを追加するところで以下のスクリプトを書いて
データのセーブと表示をやりました。